如何从DataFrame的列生成指定格式的分组列表?
解决方案
直接用 pandas 的 groupby 配合字符串拼接的聚合方法就能实现需求,具体步骤如下:
1. 构造目标 DataFrame
import pandas as pd df = pd.DataFrame({ 'a': ['xx', 'yy', 'zz', 'dd', 'pp'], 'b': ['Apple', 'Orange', 'Apple', 'Mango', 'Mango'] })
2. 分组并聚合
核心是按 b 列分组,对每组的 a 列值用逗号拼接:
# 按b列分组,将每组的a列元素用逗号连接 result_series = df.groupby('b')['a'].agg(','.join)
3. 输出期望格式
遍历聚合后的 Series,按要求格式打印:
for fruit, code_str in result_series.items(): print(f"{fruit} {code_str}")
运行后会输出:
Apple xx,zz Orange yy Mango dd,pp
为什么之前尝试失败?
大概率是没精准指定聚合的列。如果直接写 df.groupby('b').agg(','.join),会尝试对所有列(包括 b 列本身)执行拼接操作,导致不符合预期。必须明确指定要聚合的是 a 列,也就是 groupby('b')['a'].agg(','.join) 这种写法。
内容的提问来源于stack exchange,提问作者Ssank
相关产品推荐
相关产品推荐

