使用Python筛选数据帧
我有一个研究结果的数据框架,我想根据四个相同的值进行过滤使用Python筛选数据帧,python,pandas,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,如果我尝试筛选试验1和2的一致结果,但如果我想筛选所有试验的一致结果,我使用 (df.t
Trial 1 , Trial 2 , Trial 3 , Trail 4,
Pass Pass Pass Pass
Pass Fail Pass Pass
Pass Pass Fail Fail
我尝试过使用语法Df.trail1==Df.trail2
,如果我尝试筛选试验1和2的一致结果,但如果我想筛选所有试验的一致结果,我使用
(df.trial1==df.trial2)和(df.trial3==df.trail4)
它确实进行过滤,但过滤通过和失败是一致的。我只想使用相同的语法(简单代码)在所有四个测试中过滤一致的结果
感谢您在advance中的帮助,如果每行都有唯一数量的值,请使用该测试,但如果数据帧较大,则解决方案会很慢:
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
或测试,如果每列的第一列具有相同的值,则使用和:
详细信息:
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
我不确定这是否是最有效的方法,但是检查
(df.trial1==df.trial2)&(df.trial2==df.trial3)&(df.trial3==df.trail4)
怎么样呢?谢谢,唯一的问题是,实际的df有很多其他内容,我只包含了我感兴趣的专栏in@NicolaHodge-答案已编辑,使用列名称列表进行测试,这里称为cols
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