python - 用于有条件地提取重复项的 Python 代码
问题描述
假设我们有以下数据框:
group id performance
0 exp A 1
1 exp B 2
2 exp B 3
3 exp C 4
4 control A 5
5 control A 6
6 exp D 7
7 control D 8
仅提取行以使“exp”和“控件” 中都存在至少一个“id”的 Python 代码是什么?
以下是所需的输出:
group id performance
0 exp A 1
4 control A 5
5 control A 6
6 exp D 7
7 control D 8
以下代码用于创建此数据框:
students = [('exp', 'A', 1),
('exp', 'B', 2),
('exp', 'B', 3),
('exp', 'C', 4),
('control', 'A', 5),
('control', 'A', 6),
('exp', 'D', 7),
('control', 'D', 8)
]
import pandas as pd
student_df = pd.DataFrame(students, columns=['group', 'id', 'performance'])
我尝试了下面的代码,但它只无条件地提取“id”中的所有重复项。我的猜测是添加一个 if 语句?
student_df[student_df.duplicated(['id'], keep = False)]
解决方案
尝试这个。基于您的示例数据列group
只有 2 个值exp
和control
:
df_out = student_df.groupby('id').filter(lambda x: x.group.nunique() > 1)
Out[570]:
group id performance
0 exp A 1
4 control A 5
5 control A 6
6 exp D 7
7 control D 8
推荐阅读
- python - 使用 Python 可视化 Moiton Capture 数据
- c++ - 无法编译 opencv:未定义的参考 imread 等
- python - 如何在没有 tts 读取的情况下使用 discord.py 发送消息?
- java - 使用 IntentService 和 PendingIntent 接收后台位置更新
- redis - 将 redis-rs 与 actix-web 一起使用
- mysql - 遵循说明后未创建 mysql docker 容器
- reactjs - 在 SetState 中响应循环
- javascript - 我是否必须加载 60 种字体才能在网站中支持 60 种语言?
- javascript - const funcName = (args) => { }; 有什么区别?和 const funcName = (args) => ( );?
- ios - 如何在选择器参数Swift之后添加函数参数