首页 > 解决方案 > 使用 Pandas Python 过滤数据框

问题描述

我有一个研究结果的数据框架,我想根据所有四个相同的值进行过滤,

Trial 1 , Trial 2 , Trial 3 , Trail 4,
Pass      Pass      Pass      Pass 
Pass      Fail      Pass      Pass 
Pass      Pass      Fail      Fail 

如果我尝试过滤 Trial 1 和 2 的一致结果,我尝试使用有效的语法Df.trail1 == df.trail2,但是如果我想过滤所有 for 的一致结果并且我使用 (df.trial1 == df.trial2) & (df.trial3 == df.trail4)它确实过滤,但它过滤 Pass Pass 和 Fail Fail 为一致的。我想使用相同的语法(简单代码)在所有四个测试中只过滤一致的结果

提前谢谢你

标签: pythonpandas

解决方案


用于DataFrame.nunique测试每行是否具有唯一数量的值,但如果大,则解决方案很慢DataFrame

cols = ['Trial 1', 'Trial 2', 'Trial 3', 'Trail 4']

mask = df[cols].nunique(axis=1) == 1
print (mask)
0     True
1    False
2    False
dtype: bool

或测试,如果第一列的每一列具有相同的值,DataFrame.eq并且DataFrame.all

mask = df[cols].eq(df[cols[0]], axis=0).all(axis=1)

详情

print (df[cols].eq(df[cols[0]], axis=0))
   Trial 1  Trial 2  Trial 3  Trail 4
0     True     True     True     True
1     True    False     True     True
2     True     True    False    False

推荐阅读