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

Python中如何为DataFrame生成year_month列并按月分组统计

实现步骤

你已经将Date列处理为datetime格式,后续操作可以直接基于pandas的日期接口完成,不需要额外做格式转换。

  • 第一步:新增Year_Month列
    使用dt.strftime()方法直接格式化日期列,指定格式为%m-%Y即可自动生成两位月份+四位年份的字符串,个位数月份会自动补前导零,完全匹配你需要的03-2022类格式:
df['Year_Month'] = df['Date'].dt.strftime('%m-%Y')

执行完这行代码后,你的DataFrame结构就会和你给出的期望结构完全一致。

  • 第二步:按月度分组统计价格
    根据你的绘图需求,可以按Year_Month字段分组聚合价格数据,如果需要统计全品类月度平均售价,使用如下代码即可:
# 全品类月度平均价
monthly_price_stats = df.groupby('Year_Month', as_index=False)['Price'].mean()

如果需要拆分统计不同商品各自的月度价格变化,可以把商品名也加入分组键:

# 分商品的月度价格统计
monthly_price_by_item = df.groupby(['Year_Month', 'Item'], as_index=False)['Price'].mean()

注意:如果你的数据跨度超过1年,不要直接用字符串格式的Year_Month做排序,否则会出现跨年月份顺序错乱的问题,可以临时用df['Date'].dt.to_period('M')生成的年月周期类型做排序依据,排序完成后再做可视化即可。

  • 第三步:绘制月度价格变化图
    基于聚合后的月度统计数据,用matplotlib即可快速绘制趋势图,基础示例代码如下:
import matplotlib.pyplot as plt

plt.figure(figsize=(10, 6))
plt.plot(monthly_price_stats['Year_Month'], monthly_price_stats['Price'], marker='o', linewidth=2)
plt.title('杂货月度平均价格变化趋势')
plt.xlabel('统计月份')
plt.ylabel('平均售价')
plt.grid(alpha=0.3)
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 02:30:59