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

如何在Python中按分组展平Pandas DataFrame?

Pandas按ID展平多行数据为单行

假设你的原始DataFrame如下:

import pandas as pd

df = pd.DataFrame({
    'id': [1,1,2,2,3,3],
    'c1': ['A','C','E','G','I','K'],
    'c2': ['B','D','F','H','J','L']
})

方法一:分组后展平列表

通过groupby按ID分组,将每组的非ID列值展平为一维列表,再拆分到多列中:

# 分组并展平每组数据
grouped = df.groupby('id').apply(lambda x: x.drop('id', axis=1).values.flatten())
# 转换为DataFrame并重置索引
result = pd.DataFrame(grouped.tolist(), index=grouped.index).reset_index()

print(result)

方法二:利用序号unstack

先给每个ID内的行添加序号,再通过unstack将多行转为多列:

# 添加组内行序号
df['row_num'] = df.groupby('id').cumcount()
# 设置多级索引并unstack
unstacked_df = df.set_index(['id', 'row_num']).unstack()
# 移除列的上层索引并重置索引
result = unstacked_df.droplevel(0, axis=1).reset_index()

print(result)

两种方法都能得到你需要的结果,输出的列名可根据需求修改或直接忽略。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 17:15:37