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

如何将pandas dataframe转换为考虑amount列的类one hot encoding格式

实现方法

最便捷的方式是直接使用pandas内置的方法实现,根据你的使用场景可以二选一:

场景1:逐行转换,保留所有原始行

不需要聚合,仅将category字段转为多列one hot格式,对应分类的列填充当前行的amount值,其余列填0,用get_dummies方法即可:

import pandas as pd

# 假设df为你的原始DataFrame
one_hot_df = pd.concat(
    [df[["date", "amount"]], pd.get_dummies(df["category"], prefix="category").mul(df["amount"], axis=0)],
    axis=1
)

场景2:按日期聚合,生成日期维度的宽表

如果需要按date分组,同一个日期下同一分类的amount自动求和、缺失分类填充0,用pivot_table一行即可实现:

import pandas as pd

# 假设df为你的原始DataFrame
one_hot_df = pd.pivot_table(
    df,
    index="date",
    columns="category",
    values="amount",
    aggfunc="sum",
    fill_value=0,
    dropna=False
).reset_index().rename_axis(columns=None).add_prefix("category_")

参数说明

  • index:指定保留为行的字段,这里为date
  • columns:指定要转成one hot列的分类字段,这里为category
  • values:指定one hot列的填充值来源,这里为amount
  • fill_value=0:将没有对应记录的空缺位置填充为0,符合one hot的格式规范
  • add_prefix("category_"):给生成的one hot列加统一前缀,和其他字段做区分

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 13:06:05