我有一个熊猫相关矩阵数据帧,有数百列和行。我想过滤整个数据帧,以便我只获取高于某个值的单元格,例如> .4 的任何行值。我不确定最好的方法是什么。我见过多个按列名称过滤的帖子,但是有数百列,您将如何遍历每列?
如果需要过滤,仅行使用boolean indexing
掩码由gt
>
创建的掩码和any
检查至少一个True
:
df[df.gt(.4).any(axis=1)]
或者,如果要筛选行和列:
m = df.gt(.4)
df.loc[m.any(axis=1), m.any()]
如果可能只想要条件的值,请使用where
替换另一个值以NaN
s:
df.where(df.gt(.4))
示例:
np.random.seed(4137)
df = pd.DataFrame(np.random.rand(5,3), columns=list('ABC'))
df['A'] /= 10
print (df)
A B C
0 0.090262 0.313517 0.319292
1 0.086841 0.346788 0.314144
2 0.044069 0.764295 0.886659
3 0.089739 0.230103 0.594301
4 0.047101 0.132819 0.692846
df1 = df[df.gt(.4).any(axis=1)]
print (df1)
A B C
2 0.044069 0.764295 0.886659
3 0.089739 0.230103 0.594301
4 0.047101 0.132819 0.692846
m = df.gt(.4)
df2 = df.loc[m.any(axis=1), m.any()]
print (df2)
B C
2 0.764295 0.886659
3 0.230103 0.594301
4 0.132819 0.692846
df3 = df.where(df.gt(.4))
print (df3)
A B C
0 NaN NaN NaN
1 NaN NaN NaN
2 NaN 0.764295 0.886659
3 NaN NaN 0.594301
4 NaN NaN 0.692846
详情:
print (m)
A B C
0 False False False
1 False False False
2 False True True
3 False False True
4 False False True
print (m.any(axis=1))
0 False
1 False
2 True
3 True
4 True
dtype: bool
print (m.any())
A False
B True
C True
dtype: bool