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

如何从DataFrame的字符串日期中提取年月并生成指定新列?

解决DataFrame日期提取月份和年份的问题

晚上好!我来帮你搞定这个日期处理的问题~你提到用strptime()没效果,大概率是因为没有先把字符串类型的日期列转换成pandas的datetime对象,单独用Python标准库的strptime()处理DataFrame列会比较麻烦,而且效率不高。下面给你两种简单高效的实现方法:

方法一:提取数字格式的月份和年份

这种方法会直接生成整数类型的月份(1-12)和年份(4位数字),适合后续的统计分析:

import pandas as pd

# 假设你的DataFrame名为df,先将日期列转换为datetime类型
df['order date'] = pd.to_datetime(df['order date'], format='%m-%d-%Y')
df['dispatch date'] = pd.to_datetime(df['dispatch date'], format='%m-%d-%Y')

# 生成订单相关的月份和年份列
df['Order_Mt'] = df['order date'].dt.month
df['Order_yr'] = df['order date'].dt.year

# 生成发货相关的月份和年份列
df['Dispatch_Mt'] = df['dispatch date'].dt.month
df['Dispatch_Yr'] = df['dispatch date'].dt.year

方法二:提取字符串格式的月份和年份

如果你需要的是月份缩写(比如Feb)、月份全称(比如February)或者两位年份(比如13),可以用dt.strftime()来格式化:

# 提取月份缩写(如Feb)和两位年份(如13)
df['Order_Mt'] = df['order date'].dt.strftime('%b')
df['Order_yr'] = df['order date'].dt.strftime('%y')

# 提取月份全称(如February)和四位年份(如2013)
df['Dispatch_Mt'] = df['dispatch date'].dt.strftime('%B')
df['Dispatch_Yr'] = df['dispatch date'].dt.strftime('%Y')

关键说明

  • pd.to_datetime()里的format='%m-%d-%Y'是关键,它明确告诉pandas你的日期格式是月-日-年,避免自动解析出错;
  • pandas的dt访问器专门用来处理datetime类型的列,能快速提取日期的各个部分,比循环用strptime()高效得多。

内容的提问来源于stack exchange,提问作者Veera Venkata Durga Jagadeesh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:17:44