如何将分组DataFrame的类别行转换为多列?
解决方案
你可以用Pandas的ffill() + pivot()组合实现这个转换,步骤如下:
1. 填充Id列的缺失值
原始DataFrame里的空Id是继承上一行的Id,先用前向填充补全:
import pandas as pd # 模拟你的原始DataFrame(空Id用pd.NA表示) df = pd.DataFrame({ 'Id': [900000007, 900000009, pd.NA, 900000015, pd.NA, pd.NA, 900000019, pd.NA], 'Category': ['Schuur', 'Garage', 'Dakkapel', 'Schuur', 'Garage', 'Dakkapel', 'Schuur', 'Garage'], 'Amount': [8.0, 24.0, 5.0, 8.0, 20.0, 5.0, 8.0, 18.0] }) # 前向填充Id列的缺失值 df['Id'] = df['Id'].ffill()
2. 用pivot()重塑数据
指定Id为行索引,Category为列名,Amount为填充值:
result_df = df.pivot(index='Id', columns='Category', values='Amount').reset_index()
3. 调整格式(可选)
去掉列名的层级名称,让结果更贴合需求:
result_df.columns.name = None
最终得到的result_df结构如下:
Id Schuur Garage Dakkapel 0 900000007 8.0 NaN NaN 1 900000009 NaN 24.0 5.0 2 900000015 8.0 20.0 5.0 3 900000019 8.0 18.0 NaN
如果原始数据存在同一个Id+Category的重复项,可改用pivot_table()并指定聚合函数(比如aggfunc='sum')处理重复值。
内容的提问来源于stack exchange,提问作者Romy
相关产品推荐
相关产品推荐

