Python 按阈值筛选熊猫中的行值

Python 按阈值筛选熊猫中的行值,python,pandas,pearson-correlation,Python,Pandas,Pearson Correlation,我有一个关联矩阵数据框架,它有数百列和数百行。我想过滤整个数据帧,以便只获取高于某个值的单元格,例如,任何行值>0.4的单元格。我不知道最好的方法是什么。我看到过多篇按列名过滤的文章,但有数百列,如何遍历每一列 如果只想筛选行,请使用由创建的掩码,至少检查一个True: df[df.gt(.4).any(axis=1)] 或者,如果要筛选行和列: m = df.gt(.4) df.loc[m.any(axis=1), m.any()] 如果可以按条件仅需要值,请使用where将另一个值替换为

我有一个关联矩阵数据框架,它有数百列和数百行。我想过滤整个数据帧,以便只获取高于某个值的单元格,例如,任何行值>0.4的单元格。我不知道最好的方法是什么。我看到过多篇按列名过滤的文章,但有数百列,如何遍历每一列

如果只想筛选行,请使用由
创建的掩码,至少检查一个
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
详细信息

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

谢谢你,耶斯雷尔。感谢您的帮助。