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

如何将分组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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 19:20:59