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

如何用Python将DataFrame的item_code值转为列并填充qty数据

解决方案

你可以使用 pandas 的 pivot() 方法快速完成长表到宽表的转换,完全匹配你的需求:

完整可运行代码

import pandas as pd

# 初始化数据(修正原代码中的变量名错误)
data = {
    'date': ['2023-01-01','2023-01-01','2023-01-01','2023-01-02', '2023-01-02'],
    'item_code':['HTA-01', 'HTA-02', 'HTB-07', 'HTA-01', 'HTA-02'],
    'qty':['16', '29', '1', '18', '34'],
}
df = pd.DataFrame(data)

# 将qty列转换为数值类型(原数据是字符串,转换后缺失值会显示为nan)
df['qty'] = pd.to_numeric(df['qty'])

# 执行宽表转换
pivoted_df = df.pivot(index='date', columns='item_code', values='qty').reset_index()

# 重置列名(让输出格式更整洁)
pivoted_df.columns.name = None

print(pivoted_df)

代码说明

  • pivot() 方法的核心参数作用:
    • index='date':指定date作为行标识
    • columns='item_code':将item_code的唯一值作为新列名
    • values='qty':用qty列的值填充对应位置
  • 转换后不存在的日期-商品组合(比如2023-01-02的HTB-07)会自动填充为nan
  • 提前将qty转为数值类型,确保缺失值显示为标准的数值型nan

运行结果

date  HTA-01  HTA-02  HTB-07
0 2023-01-01      16      29     1.0
1 2023-01-02      18      34     NaN

特殊情况处理(存在重复的日期+商品记录)

如果数据中同一日期同一商品有多条记录,改用pivot_table()并指定聚合函数,例如求和:

pivoted_df = df.pivot_table(index='date', columns='item_code', values='qty', aggfunc='sum').reset_index()
pivoted_df.columns.name = None

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 00:53:36