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

如何用Python将DataFrame的日期时间列透视转换为按月份拆分的列

Python实现方案
  • 第一步:导入依赖库
import pandas as pd
  • 第二步:构造测试数据(实际使用时替换为读取自己的数据集即可,比如pd.read_csv('你的文件路径.csv'))
data = {
    'Product': ['00001', '00002', '00003', '00001', '00002', '00003'],
    'Arrive Time': ['2021-1-25', '2021-2-25', '2021-3-25', '2021-4-25', '2021-4-25', '2021-3-10']
}
df = pd.DataFrame(data)
  • 第三步:数据预处理,转换日期格式并提取月份信息
# 转换到货时间列为datetime格式
df['Arrive Time'] = pd.to_datetime(df['Arrive Time'])
# 提取月份数字用于保证列的自然顺序
df['month_num'] = df['Arrive Time'].dt.month
  • 第四步:生成透视表并按需求调整格式
# 生成透视表,统计每个产品每月的到货次数
pivot_df = df.pivot_table(
    index='Product',
    columns='month_num',
    values='Arrive Time',
    aggfunc='count',
    fill_value=0
)
# 将列名从数字替换为月份英文全称
pivot_df.columns = pd.to_datetime(pivot_df.columns, format='%m').month_name()
# 替换值:到货次数大于0标记为Yes,否则标记为na
pivot_df = pivot_df.map(lambda x: 'Yes' if x > 0 else 'na').reset_index()
  • 补充说明:如果数据集包含多个年份,需要区分不同年份的同月份到货记录,可修改月份提取逻辑为:
df['year_month'] = df['Arrive Time'].dt.strftime('%Y-%B')
# 后续透视表的columns参数改为'year_month'即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 14:06:05