You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python长表转宽表:将同一标识符关联城镇合并至单行

Python长转宽:合并同一标识符的关联城镇

解决方案:使用pandas的分组聚合

你遇到的问题核心是对同一标识符下的多值进行字符串聚合,而非传统的数值型宽表转换(比如pivot),用groupby配合字符串拼接就能解决:

  1. 先导入pandas库:
import pandas as pd
  1. 构造示例原始数据(模拟你的输入格式):
# 原始长格式数据
df = pd.DataFrame({
    '标识符': ['A', 'A', 'B', 'C', 'C', 'C', 'D', 'E'],
    '城镇': ['北京', '上海', '广州', '深圳', '杭州', '南京', '成都', '西安']
})
  1. 执行分组聚合,将同一标识符的城镇用逗号分隔:
# 按标识符分组,拼接城镇列
result_df = df.groupby('标识符')['城镇'].agg(','.join).reset_index()
  1. 输出结果:
print(result_df)

输出效果:

标识符        城镇
0    A    北京,上海
1    B        广州
2    C  深圳,杭州,南京
3    D        成都
4    E        西安

进阶:处理重复城镇

如果原始数据中同一标识符下存在重复的城镇,可以先去重再拼接:

result_df = df.groupby('标识符')['城镇'].agg(lambda x: ','.join(x.unique())).reset_index()

为什么不用pivot?

传统的pivot/pivot_table适合将多列值转为宽表的不同列,但你的需求是将同一列的多值合并为单个字符串,因此分组聚合是更直接的方案。

内容的提问来源于stack exchange,提问作者omirz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 07:45:49