Pandas为每列计算np.var()

时间:2016-06-30 09:53:54

标签: python pandas

如何为每列计算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

1 个答案:

答案 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