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

Pandas DataFrame如何实现行转列 将currency字段转为独立列

实现方法

用Pandas内置的pivot_table即可快速完成长表转宽表,缺失值直接通过参数指定填充为0,不需要额外处理。

完整代码示例

import pandas as pd

# 替换为你从数据源读取得到的原始DataFrame即可
df = pd.DataFrame({
    "date": ["d1", "d2", "d2", "d3", "d3", "d3"],
    "currency": ["INR", "INR", "USD", "USD", "INR", "JPY"],
    "price": [31, 32, 21, 41, 51, 61]
})

# 执行行转列
wide_df = (
    df.pivot_table(
        index="date",
        columns="currency",
        values="price",
        fill_value=0,
        aggfunc="first" # 如果确定同一日期同一货币只有一条价格,用first执行更快;如果有多条需要求和就换成sum
    )
    .reset_index()
    # 手动指定列顺序,和要求的INR/JPY/USD顺序对齐
    [["date", "INR", "JPY", "USD"]]
)

参数说明

  • index="date":指定date作为宽表的行维度
  • columns="currency":把currency列的唯一枚举值展开为宽表的单独列
  • values="price":取price列的数值作为宽表对应单元格的内容
  • fill_value=0:没有匹配到对应价格的单元格直接填充0,符合需求
  • aggfunc:聚合规则,如果同一日期+货币组合存在多条记录,会按该规则聚合,单条记录时任意聚合规则都不影响结果

注意:你给出的目标宽表示例里d3日期的USD价格写为42,和原始数据的41不一致,属于示例笔误,代码输出会以原始数据为准。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 13:03:29