|
发表于 2019-5-14 15:03:57
|
显示全部楼层
1. 转置是为了让 data[data.columns[1:]] 和 指标列 可以比较
假设你的数据是 10 行 5 列
data[data.columns[1:]] 的 shape 就是 (10, 4)
而 data['指标'] 是一个 Series,它的 shape 是 (10,)
利用 np.matrix 这个方法,可以将指标列转换成矩阵,但这个矩阵的 shape 是 (1, 10)
将矩阵转置,shape 就变成 (10, 1),就可以和 data[data.columns[1:]] 比较了
2. 这里的 1 和 0 是传给 np.where 的第二和第三个参数
np.where 接收三个参数 condition, x , y
condition 是布尔型数组,x 是数组的元素为 True 时的取值,y 是数组的元素为 False 的取值
为了实现 Excel 里的 countif,只需让 x 为 1,y 为 0,然后再按行求和即可
其实不用 np.where 会更简单
- data['count_if'] = (data[data.columns[1:]] > np.matrix(data['指标']).T).sum(axis=1)
复制代码
可以得到同样的结果 |
|