按阈值过滤熊猫中的行值



我有一个熊猫相关矩阵数据帧,有数百列和行。我想过滤整个数据帧,以便我只获取高于某个值的单元格,例如> .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替换另一个值以NaNs:

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

相关内容

  • 没有找到相关文章

最新更新