python - 使用 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 为一致的。我想使用相同的语法(简单代码)在所有四个测试中只过滤一致的结果
提前谢谢你
解决方案
用于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
推荐阅读
- reactjs - 当只有一个值改变时如何防止整个 FlatList 重新渲染
- python-3.x - python3,音频流
- html - 如何制作带有侧边栏的照片轮播?
- drone - 无法让drone.io CI 在流水线步骤之间共享文件
- multithreading - 使用Arduino从串口读取提供垃圾输出
- html - 显示一个(n)
- 基于@media 查询格式化为弹性盒
- python - 无法使用烧瓶邮件发送电子邮件
- winston - winstonjs - 通过管道使用winston记录子进程stdout / stderr
- winforms - Windows 窗体应用程序 - 如何使选项卡控件中的选项卡获得全宽?
- r - 自动生成pdf和txt文件的名称