Python Pandas如何删除某列值相同且另一列值不同的对应重复行
Pandas实现方案
核心逻辑:按Subject列分组后,仅保留对应Source列唯一值数量为1的分组即可自动过滤不符合要求的所有行。
完整可运行代码
import pandas as pd # 构造样例数据 data = { 'Date': ['12/06/21', '12/06/21', '12/06/21', '12/06/21', '12/06/21'], 'From': ['Sender1', 'Sender2', 'Sender1', 'Sender3', 'Sender3'], 'Subject': ['Test123', 'Confirm', 'Test123', 'Test_on', 'Test_on'], 'Source': ['Inbox', 'Inbox', 'Sent', 'Inbox', 'Inbox'] } df = pd.DataFrame(data) # 核心处理逻辑 df_result = df.groupby('Subject').filter(lambda x: x['Source'].nunique() == 1) # 输出结果 print(df_result)
代码说明
groupby('Subject'):将数据按邮件主题分组filter()方法:对每个分组做条件校验,仅保留符合条件的分组所有行x['Source'].nunique() == 1:校验当前主题对应的所有Source值是否唯一,是则保留,否则剔除该主题全部行
运行后输出的结果和预期完全一致:
| Date | From | Subject | Source |
|---|---|---|---|
| 12/06/21 | Sender2 | Confirm | Inbox |
| 12/06/21 | Sender3 | Test_on | Inbox |
| 12/06/21 | Sender3 | Test_on | Inbox |
内容的提问来源于stack exchange,提问作者Dunu
相关产品推荐
相关产品推荐

