使用Pandas Python过滤数据框

时间:2019-12-07 14:34:50

标签: python pandas

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

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

我尝试使用语法Df.trail1 == df.trail2,如果Im试图过滤试验1和2的一致结果,则使用该语法,但是如果我想过滤所有的一致结果,则使用 (df.trial1 == df.trial2) & (df.trial3 == df.trail4)会过滤,但会过滤通过和未通过的一致性。我只想使用相同的语法(简单代码)在所有四个测试中过滤一致的结果

感谢您

2 个答案:

答案 0 :(得分:1)

使用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.eqDataFrame.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

答案 1 :(得分:0)

请参阅Stackoverflow上发布的类似问题。应该可以帮到你。 Pandas Dataframe Find Rows Where all Columns Equal