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

从order_date生成order_month列时遇TypeError错误求助

解决TypeError: strptime() argument 1 must be str, not Timestamp错误

错误原因

order_date列被pandas读取Excel时自动解析成了Timestamp类型,但你代码里用datetime.datetime.strptime()试图把Timestamp对象当作字符串解析,这就触发了类型不匹配的错误。


解决方案(三种可选)

方法1:用pandas自带的dt属性直接格式化(推荐,效率更高)

利用pandas对日期列的原生支持,直接通过dt.strftime格式化:

import pandas as pd
dataset = pd.read_excel("D:\\DataSciencePython/retail_raw_reduced.xltx")
# 直接对Timestamp列做格式化处理
dataset['order_month'] = dataset['order_date'].dt.strftime('%Y-%m')
print(dataset.head())

方法2:转换为月份周期类型(适合后续统计/可视化)

如果只需要年月维度的信息,可以生成周期对象再转成字符串:

import pandas as pd
dataset = pd.read_excel("D:\\DataSciencePython/retail_raw_reduced.xltx")
dataset['order_month'] = dataset['order_date'].dt.to_period('M').astype(str)
print(dataset.head())

方法3:修复原有apply逻辑

一定要保留apply写法的话,去掉多余的strptime步骤,直接对Timestamp对象调用strftime:

import datetime
import pandas as pd
dataset = pd.read_excel("D:\\DataSciencePython/retail_raw_reduced.xltx")
dataset['order_month'] = dataset['order_date'].apply(lambda x: x.strftime('%Y-%m'))
print(dataset.head())

以上三种方法都能输出你期望的结果,生成格式为YYYY-MM的order_month列。

内容的提问来源于stack exchange,提问作者Syarifah Chaira Zulfa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 13:03:17