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

在Pandas DataFrame中按月份统计各物品的出现次数

解决方案

我们可以通过日期格式转换 + 透视表统计快速实现需求,具体操作步骤如下:

1. 把Date列转为datetime类型

首先要确保日期列是Pandas可识别的datetime格式,否则无法提取月份:

import pandas as pd

# 假设你的原始数据框叫df
df['Date'] = pd.to_datetime(df['Date'])

2. 提取月份英文缩写

新增一列存储月份的缩写(Jan、Feb这类),用strftime('%b')直接生成:

df['Month'] = df['Date'].dt.strftime('%b')

3. 生成统计透视表

用两种方法都能实现需求,选你顺手的就行:

方法一:用pivot_table

result_df = pd.pivot_table(
    df,
    index='Items',  # 把Items设为行索引
    columns='Month',  # 月份作为列
    values='Date',  # 随便选一列,我们要的是计数
    aggfunc='count',  # 统计出现次数
    fill_value=0  # 没有数据的单元格填0
)

方法二:用crosstab(更简洁)

result_df = pd.crosstab(df['Items'], df['Month']).fillna(0).astype(int)

4. 调整月份列顺序(可选)

如果你的数据有多个月份,想按自然顺序排列列,可以手动指定顺序:

# 定义全年月份的缩写顺序
month_order = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
# 只保留数据中存在的月份,并按顺序排列
result_df = result_df.reindex(columns=[m for m in month_order if m in result_df.columns])

最终示例效果

用你提供的样例数据运行后,结果会是这样:

ItemsJanFeb
Item121
Item210
Item310

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 19:18:17