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

使用Pandas按渠道拆分日期支出数据生成对应新列

用Pandas自动生成各渠道支出列的解决方案

针对需求——将包含日期、渠道、支出的长格式数据集,转换为每个日期对应各渠道支出的宽格式表格,直接用Pandas的pivot或pivot_table方法就能自动完成,无需手动操作。

步骤1:模拟原始数据集(匹配你的数据结构)

import pandas as pd

# 模拟和你格式一致的原始数据
df = pd.DataFrame({
    '日期': ['2024-01-01', '2024-01-01', '2024-01-01', '2024-01-02', '2024-01-02', '2024-01-02'],
    '渠道': ['Display', 'search', 'social', 'Display', 'search', 'social'],
    '支出': [150, 200, 80, 180, 220, 95]
})

原始数据样例:

日期      渠道   支出
0  2024-01-01  Display  150
1  2024-01-01   search  200
2  2024-01-01   social   80
3  2024-01-02  Display  180
4  2024-01-02   search  220
5  2024-01-02   social   95

步骤2:核心转换代码

情况1:每个日期-渠道组合唯一(无重复数据)

用pivot快速转换:

# 自动生成Display、search、social三列,对应各日期的支出
result_df = df.pivot(index='日期', columns='渠道', values='支出').reset_index()
# 移除自动生成的列名层级,让表头更简洁
result_df.columns.name = None

转换后的期望输出:

日期  Display  search  social
0  2024-01-01      150     200      80
1  2024-01-02      180     220      95

情况2:存在重复的日期-渠道组合(同一日期同一渠道有多条支出记录)

用pivot_table指定聚合方式(比如求和):

# 对重复的日期-渠道支出值求和,可按需替换为'mean'取平均、'max'取最大值等
result_df = pd.pivot_table(
    df,
    index='日期',
    columns='渠道',
    values='支出',
    aggfunc='sum'
).reset_index()
result_df.columns.name = None

代码说明

  • index='日期':以日期作为每行的唯一标识
  • columns='渠道':自动将渠道的不同取值转为单独的列
  • values='支出':用支出字段的数值填充新生成的列
  • reset_index():把日期从行索引转回普通列,符合常规表格格式
  • columns.name = None:删除Pandas自动添加的列名层级,避免表头出现多余的"渠道"标签

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 17:23:20