Python:带时区datetime列转date失败,求解决方法
解决方法
问题根源
你的date列是object类型(字符串),而.dt访问器仅适用于datetime64类型的列,所以直接调用.dt.strftime会报错。需要先把字符串列转换为datetime类型,再提取日期部分。
具体步骤
将字符串列转换为datetime类型
Pandas的pd.to_datetime()可以自动识别你这种带T和Z后缀的ISO格式时间字符串,执行以下命令:import pandas as pd df['date'] = pd.to_datetime(df['date'])如果存在无效的时间字符串,可以添加
errors='coerce'参数将无效值转为NaT(缺失值),方便后续处理:df['date'] = pd.to_datetime(df['date'], errors='coerce')提取日期部分
转换为datetime类型后,有两种方式得到你想要的YYYY-MM-DD格式:- 方式一:转为字符串格式(推荐,保持统一的字符串类型)
df['date'] = df['date'].dt.strftime('%Y-%m-%d') - 方式二:转为Python原生
date对象df['date'] = df['date'].dt.date
- 方式一:转为字符串格式(推荐,保持统一的字符串类型)
一步到位写法
如果不想分步操作,可以直接合并为一行代码:
df['date'] = pd.to_datetime(df['date']).dt.strftime('%Y-%m-%d')
内容的提问来源于stack exchange,提问作者Ty Kendall
相关产品推荐
相关产品推荐

