从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
相关产品推荐
相关产品推荐

