错误使用熊猫
问题描述:
我有这样一个数据帧to_datetime时:错误使用熊猫
Date Quote-Spread
0 2013-11-17 0.010000
1 2013-12-10 0.020000
2 2013-12-11 0.013333
3 2014-06-01 0.050000
4 2014-06-23 0.050000
当我使用此代码我提出一个错误:
import pandas as pd
pd.to_datetime(df1['Date'] ,format ="%Y%m%d")
ValueError: time data '2013-11-17' does not match format '%Y%m%d' (match)
我怎样才能纠正这一错误?
答
使用to_datetime
只:
df1['Date'] = pd.to_datetime(df1['Date'])
print (df1['Date'])
0 2013-11-17
1 2013-12-10
2 2013-12-11
3 2014-06-01
4 2014-06-23
Name: Date, dtype: datetime64[ns]
或者,如果要指定格式添加-
,因为%Y%m%d
比赛YYMMDD
和您的格式是YY-MM-DD
:
pd.to_datetime(df1['Date'], format ="%Y-%m-%d")
答
to_datetime是要走的路。与使用列表理解或应用的替代方法相比,它是最快的。
import pandas as pd
import datetime
# Create dataset
df1 = pd.DataFrame(dict(Date=['2013-11-17','2013-12-10']*10000))
ALT1,列表理解:
df1.Date = [datetime.datetime.strptime(i,"%Y-%m-%d") for i in df1.Date.values]
ALT2,适用于:
df1.Date = df1.Date.apply(lambda x: datetime.datetime.strptime(x,"%Y-%m-%d"))
ALT3,to_datetime:
df1.Date = pd.to_datetime(df1.Date)
计时
1 loop, best of 3: 744 ms per loop #1
1 loop, best of 3: 793 ms per loop #2
100 loops, best of 3: 18.5 ms per loop #3
尝试为'pd.DataFrame(dict(Date = ['2013-11-17','2013-12-10'] * 10000))''谢谢。 – jezrael
@jezrael是的,我做到了,结果相同。我会更新 –
我第一次感到惊讶;)谢谢。 – jezrael