Pandas如何将重复行聚合为单行并合并对应列的多个值
你可以直接用 groupby + agg 组合实现需求,以下是完整可运行的代码:
首先构造示例DataFrame:
import pandas as pd # 构造示例数据 df = pd.DataFrame({ "name": ["name_1", "name_1", "name_1"], "value": ["A", "B", "C"] })
第一种:合并为逗号分隔的字符串
对分组后的value列调用 ','.join 聚合即可:
res_str = df.groupby("name", as_index=False)["value"].agg(",".join)
运行后res_str的输出就是你要的第一种效果:
| name | value |
|---|---|
| name_1 | A,B,C |
第二种:合并为列表格式存储
直接把聚合规则换成list即可:
res_list = df.groupby("name", as_index=False)["value"].agg(list)
运行后res_list的输出就是你要的第二种效果:
| name | value |
|---|---|
| name_1 | [A, B, C] |
补充说明:如果你的数据里存在NaN值,想在合并时过滤掉,可以先调用dropna(subset=["value"])清理数据再做聚合,避免合并结果出现多余的空值占位。
内容的提问来源于stack exchange,提问作者Alex Nikitin
相关产品推荐
相关产品推荐

