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

如何将Pandas表格中相同ID的多行不同值合并为一行多列?

问题:将重复ID的多行数据转为单行多列格式

我有一个Pandas表格,其中部分ID在多行中重复出现,但对应的取值各不相同。希望实现每个ID仅在一行中显示,并将不同的取值追加到多列中。

起始表格

ID列1
1blue
1red
2gray
3yellow
4orange
1pink
2white

期望结果

ID列1列2列3
1blueredpink
2graywhite
3yellow
4orange

解决方案

可以通过分组计数+透视表的方式实现,具体代码如下:

import pandas as pd

# 1. 构造示例数据(替换为你的DataFrame即可)
data = {
    'ID': [1,1,2,3,4,1,2],
    '列1': ['blue','red','gray','yellow','orange','pink','white']
}
df = pd.DataFrame(data)

# 2. 为每个ID分组内的行添加序号(从1开始)
df['序号'] = df.groupby('ID').cumcount() + 1

# 3. 透视转换:将序号转为列,ID作为行索引
result = df.pivot(index='ID', columns='序号', values='列1')

# 4. 重命名列名,匹配"列1、列2..."的格式
result.columns = [f'列{col}' for col in result.columns]

# 5. 重置索引,让ID变回普通列;空值填充为空字符串
result = result.reset_index().fillna('')

print(result)

代码说明

  • groupby('ID').cumcount():给每个ID分组内的行按顺序计数,+1是让序号从1开始,对应后续的列1、列2。
  • pivot():将分组后的序号转为列,实现行转列的效果。
  • fillna(''):把透视后产生的空值(NaN)替换为空字符串,和期望结果格式一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 01:50:28