[英]How to convert a pandas column to datetime
我有一个数据框df
df
date
0 05/01/2017
1 04/01/2017
2 08/01/2017
3 03/01/2017
4 10/01/2017
我想将列date
从str
转换为datetime
我正在做如下
df['date'] = pd.to_datetime(df['date'])
但它需要无限的时间,如果我尝试
pd.to_datetime(df['date'][0])
我收到以下错误
year is out of range
指定format
或infer_datetime_format
可以显着提高性能:
df = pd.concat([df]*10000)
%timeit pd.to_datetime(df['date']) # 12.5 s per loop
%timeit pd.to_datetime(df['date'], format='%m/%d/%Y') # 252 ms per loop
%timeit pd.to_datetime(df['date'], infer_datetime_format=True) # 228 ms per loop
事先告诉熊猫您的期望通常是提高性能的一种好方法。 因此,如果您正在从输入文件中进行读取,则此想法也将与pd.read_csv
一起使用。
您的错误很可能是由于数据不正确造成的。 如果您希望为不可转换的值返回NaT
,请指定errors='coerce'
:
pd.to_datetime(df['date'], format='%m/%d/%Y', errors='coerce')
试试这个代码:
df['date'] = pd.to_datetime(df['date'],infer_datetime_format=True)
从pandas官方文档获取,如果传递的infer_datetime_format = True并非完全是ISO8601格式,而是正确的常规格式(例如您要传递的格式),通常可以加快解析速度
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.