如何在Pandas中提取其他列行数据相同时的Article列值列表
解决方案
你需要按除Article外的所有列分组,筛选出分组后包含多个Article的组,再提取这些组的Article值组成元组列表。直接上代码:
首先构造示例DataFrame:
import pandas as pd data = { 'Rating': [5,5,5,4], 'UserName': ['Madison','Madison','Lindsanna','Mamax4'], 'ReviewDate': ['2023-06-05']*4, 'Article': ['025-03-7579','025-03-2888','025-03-9268','025-03-1736'], 'Score': [0.924742,0.924742,0.990300,0.875178] } df = pd.DataFrame(data)
然后执行核心逻辑:
# 确定分组列:排除Article group_cols = df.columns.difference(['Article']) # 分组后聚合Article为元组,筛选出元素数>1的组 result = ( df.groupby(group_cols)['Article'] .agg(tuple) .loc[lambda x: x.str.len() > 1] .tolist() ) print(result) # 输出:[('025-03-7579', '025-03-2888')]
代码说明
df.columns.difference(['Article']):自动获取所有除Article外的列,避免手动输入列名出错;groupby(group_cols)['Article'].agg(tuple):按指定列分组,把每组的Article值拼成元组;.loc[lambda x: x.str.len() > 1]:只保留包含多个Article的分组(也就是你要找的重复数据组);.tolist():把最终结果转成列表格式,匹配你的需求。
你之前用groupby('Article')方向反了,应该按其他列分组而非按Article分组,所以没得到正确结果。
内容的提问来源于stack exchange,提问作者Faraz Khan
相关产品推荐
相关产品推荐

