如何为每列计算np.var()?如果np.var()< 0.1,则删除该列。
Id F M R
7 1 286 907
12 1 286 907
17 1 186 1271
21 1 296 905
30 1 308 908
32 1 267 905
40 2 591 788
41 1 486 874
47 1 686 906
74 1 230 907
答案 0 :(得分:1)
试试这个:
In [62]: df[df.columns[(df.var(ddof=0) >= 1.0)]]
Out[62]:
Id M R
0 7 286 907
1 12 286 907
2 17 186 1271
3 21 296 905
4 30 308 908
5 32 267 905
6 40 591 788
7 41 486 874
8 47 686 906
9 74 230 907
说明:
In [64]: (df.var(ddof=0) >= 1.0)
Out[64]:
Id True
F False
M True
R True
dtype: bool
In [61]: df.columns[(df.var(ddof=0) >= 1.0)]
Out[61]: Index(['Id', 'M', 'R'], dtype='object')
In [62]: df[df.columns[(df.var(ddof=0) >= 1.0)]]
Out[62]:
Id M R
0 7 286 907
1 12 286 907
2 17 186 1271
3 21 296 905
4 30 308 908
5 32 267 905
6 40 591 788
7 41 486 874
8 47 686 906
9 74 230 907
PS感谢@ayhan - 他注意到pandas's var()使用ddof=1
参数的默认值,而numpy's implementation默认使用ddof=0
。