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

如何基于多列特定值将Pandas DataFrame行值转换为列

解决方案:Pandas DataFrame 按指定列重塑(透视)

可以使用Pandas的pivot方法直接实现需求,该方法能快速将指定列的取值转换为新列,并按分组填充对应的值。

完整代码示例

import pandas as pd

# 初始化原始DataFrame
df = pd.DataFrame({
    "Year":[2023, 2023, 2023, 2024, 2024, 2024],
    "Value":[0, 2, 3, 1, 5, 2],
    "Field":["A", "A", "B", "A", "B", "B"],
    "ID":["X", "X", "X", "X", "Z", "Y"],
    "Type":["class1","class2","class1","class1","class1","class2"]
})

# 执行透视操作,重塑DataFrame
result_df = df.pivot(
    index=["Year", "Field", "ID"],
    columns="Type",
    values="Value"
).reset_index()

# 移除列索引的名称,让输出格式更匹配需求
result_df.columns.name = None

# 查看结果
print(result_df)

代码说明

  • pivot参数解析:
    • index=["Year", "Field", "ID"]:将这三列作为行的唯一标识,确保相同组合的行被合并为一行
    • columns="Type":把Type列的不同取值(class1/class2)转换为新的列名
    • values="Value":将Value列的数值填充到对应分组和Type列的交叉位置,没有对应值的位置自动填充NaN
  • reset_index():将原本作为索引的Year/Field/ID转换为普通列,恢复成常规的DataFrame结构
  • columns.name = None:移除透视后默认保留的列索引名称(原Type),让输出完全匹配期望格式

输出结果

Year Field ID  class1  class2
0  2023     A  X     0.0     2.0
1  2023     B  X     3.0     NaN
2  2024     A  X     1.0     NaN
3  2024     B  Z     5.0     NaN
4  2024     B  Y     NaN     2.0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 17:45:29