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

如何用Python DataFrame按日期计算并生成月度汇总数据表

解决方案

下面是实现需求的完整代码,附带分步说明:

import pandas as pd

# 原数据初始化
data = {'Date': ['01-01-2021', '02-01-2021', '03-01-2021', '01-02-2021', '02-02-2021', '03-02-2021'],
        'product': ['Apple', 'Apple', 'Apple', 'Apple', 'Apple', 'Apple'],
        'quantity': [1,2,3,4,5,6],
        'numbers': [1,2,3,4,5,6]}
df = pd.DataFrame(data)

# 1. 转换日期格式,提取年、月
df['Date'] = pd.to_datetime(df['Date'], format='%d-%m-%Y')
df['year'] = df['Date'].dt.year
df['month'] = df['Date'].dt.month

# 2. 将宽表转成需求的长表结构
melted_df = df.melt(
    id_vars=['year', 'month', 'product'],
    value_vars=['quantity', 'numbers'],
    var_name='measurement',
    value_name='value'
)

# 3. 按年月、产品、指标分组汇总
final_df = melted_df.groupby(
    ['year', 'month', 'product', 'measurement']
)['value'].sum().reset_index()

print(final_df)

分步解释

  1. 日期处理:把字符串格式的Date转成pandas日期类型,指定format='%d-%m-%Y'匹配原数据的日-月-年格式,避免解析错误。接着用dt.year和dt.month提取年、月信息。
  2. 宽表转长表:用melt函数把quantity和numbers两个指标列合并成measurement(指标名)和value(指标值),保留年、月、产品作为分组标识列。
  3. 分组汇总:按year、month、product、measurement分组,对value求和(如果需要其他聚合逻辑,比如求均值,把sum()换成mean()即可),最后用reset_index()把分组索引转回普通列。

运行后输出结果:

year  month product measurement  value
0  2021      1   Apple    quantity      6
1  2021      1   Apple      numbers      6
2  2021      2   Apple    quantity     15
3  2021      2   Apple      numbers     15

如果需要月份显示为英文名称(如January),可以把提取月份的代码改成:

df['month'] = df['Date'].dt.month_name()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 02:03:21