我有一个研究结果的数据框,我想根据所有四个相同的值进行过滤
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)
会过滤,但会过滤通过和未通过的一致性。我只想使用相同的语法(简单代码)在所有四个测试中过滤一致的结果
感谢您
答案 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.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
答案 1 :(得分:0)
请参阅Stackoverflow上发布的类似问题。应该可以帮到你。 Pandas Dataframe Find Rows Where all Columns Equal