Dataframe列类型转换报错:字符串列转datetime触发TypeError
批量转换DataFrame日期字符串为datetime对象的解决方案
首选方案:使用pandas内置的pd.to_datetime()
这是矢量化操作,无需循环,效率远高于逐元素处理,是pandas官方推荐的方法:
自动推断日期格式(大部分场景下可用):
import pandas as pd df['DateTime'] = pd.to_datetime(df['DateTime'])指定固定格式(如果自动推断出错,或想提升处理速度):
把format参数设置为你的日期字符串对应的格式(比如%Y-%m-%d %H:%M:%S代表"年-月-日 时:分:秒"):df['DateTime'] = pd.to_datetime(df['DateTime'], format='%Y-%m-%d %H:%M:%S')处理无效日期值:
如果列里有不符合格式的字符串,可以用errors参数控制处理逻辑:errors='coerce':将无效值转为NaT(pandas的缺失日期类型)errors='ignore':保留原字符串不转换
df['DateTime'] = pd.to_datetime(df['DateTime'], format='%Y-%m-%d %H:%M:%S', errors='coerce')
备选方案:使用apply()(仅适用于特殊自定义场景)
如果必须用datetime.strptime处理,可以通过apply()隐式遍历,但效率低于pd.to_datetime(),仅推荐在有特殊格式需求时使用:
from datetime import datetime df['DateTime'] = df['DateTime'].apply(lambda x: datetime.strptime(x, '%Y-%m-%d %H:%M:%S'))
内容的提问来源于stack exchange,提问作者Jakub Szurlej
相关产品推荐
相关产品推荐

