Pandas中拆分整数日期列转换为datetime报错求助
问题解决:将8位日期数值转换为datetime类型
错误原因
你的date_checkout_y列是数值类型(int/float),而str.split是字符串专属方法,数值列无法调用str属性,因此执行代码时会报错。
最优解决方案:直接解析为datetime
你的日期格式是标准的YYYYMMDD(如18000809对应1800年8月9日),无需拆分,用pandas.to_datetime直接指定格式即可完成转换,这是最高效的方式:
import pandas as pd # 直接转换数值列为datetime df['date_checkout_y'] = pd.to_datetime(df['date_checkout_y'], format='%Y%m%d')
如果担心数值类型的解析问题,可以先转成字符串再处理:
df['date_checkout_y'] = pd.to_datetime(df['date_checkout_y'].astype(str), format='%Y%m%d')
可选方案:拆分后转换(仅作演示)
如果一定要通过拆分年/月/日的方式实现,步骤如下:
- 将数值列转为字符串
- 按位置拆分年、月、日
- 组合为datetime类型
# 转字符串 df['date_str'] = df['date_checkout_y'].astype(str) # 拆分年、月、日 df['year'] = df['date_str'].str[:4] df['month'] = df['date_str'].str[4:6] df['day'] = df['date_str'].str[6:8] # 组合成datetime df['date_checkout_y'] = pd.to_datetime(df[['year', 'month', 'day']]) # 删除临时列 df.drop(['date_str', 'year', 'month', 'day'], axis=1, inplace=True)
内容的提问来源于stack exchange,提问作者Teejay Akalonu
相关产品推荐
相关产品推荐

