如何使用Pandas筛选出同一账户代码对应多种不同描述的DataFrame记录
解决方案:筛选多描述的账户代码记录
这问题我之前处理过类似的,用Pandas的分组统计+过滤就能轻松解决,给你一步步拆解:
1. 先构造可测试的示例数据
先把你给出的示例输入转换成可直接运行的Pandas DataFrame:
import pandas as pd data = { "Acc. Code": ["0001", "0002", "0002", "0003", "0003", "0004", "0005", "0006", "0006", "0006", "0007"], "Description": ["Description 1", "Description 2", "Description 2", "Description 3", "Desc. 3", "Description 4", "Description 5", "Description 6", "Desc. 6", "desc. Six", "Description 1"] } df = pd.DataFrame(data)
2. 定位存在多描述的账户代码
我们先按Acc. Code分组,统计每个账户对应的唯一Description数量,再筛选出数量大于1的账户:
# 统计每个账户的唯一描述数 acc_desc_unique_counts = df.groupby("Acc. Code")["Description"].nunique() # 提取出有多个不同描述的账户代码 multi_desc_accs = acc_desc_unique_counts[acc_desc_unique_counts > 1].index
3. 过滤原DataFrame得到目标记录
最后用这些账户代码去过滤原DataFrame,就能得到所有同一账户对应多种描述的记录:
result_df = df[df["Acc. Code"].isin(multi_desc_accs)] print(result_df)
运行后输出的结果和你期望的完全一致:
Acc. Code Description 3 0003 Description 3 4 0003 Desc. 3 7 0006 Description 6 8 0006 Desc. 6 9 0006 desc. Six
补充小技巧
如果需要忽略大小写判断描述是否重复(比如想把Desc. 6和desc. Six视为同一种),可以先对Description列做小写转换后再统计:
acc_desc_unique_counts = df.groupby("Acc. Code")["Description"].apply(lambda x: x.str.lower().nunique())
内容的提问来源于stack exchange,提问作者WRL41225
相关产品推荐
相关产品推荐

