我试图用很多方法来解决这个问题,但没有一个能够解决这个问题。
我想将pandas
系列转换为datetime
。
我想我可能会错过一些小而重要的部分。
print test["order_date"][3]
print type(test["order_date"][3])
test["order_date"] = pd.to_datetime(test["order_date"], format="%Y-%m-%d %H:%M:%S")
##have also tried
##test["order_date"] = pd.to_datetime(test["order_date"], infer_datetime_format=True)
##test["order_date"] = test["order_date"].apply(pd.to_datetime)
##all turn out to be the same result
print test["order_date"][3]
print type(test["order_date"][3])
结果如下:
20150731000001
<type 'numpy.int64'>
1970-01-01 05:35:50.731000001
<class 'pandas.tslib.Timestamp'>
我无法弄清楚result
成为1970-01-01
如果需要任何进一步的信息,请告诉我。
谢谢!
答案 0 :(得分:4)
您指定了错误的格式。
试试这个:
In [34]: pd.to_datetime(['20150731000001'], format="%Y%m%d%H%M%S")
Out[34]: DatetimeIndex(['2015-07-31 00:00:01'], dtype='datetime64[ns]', freq=None)
答案 1 :(得分:2)
这是因为dtype是int64
所以它假设为纳秒单位值:
In[51]:
pd.to_datetime(20150731000001, unit='ns')
Out[51]: Timestamp('1970-01-01 05:35:50.731000001')
如果是字符串,则可以正确解析:
In[54]:
pd.to_datetime('20150731000001')
Out[53]: Timestamp('2015-07-31 00:00:01')
因此,您可以显式传递格式字符串(例如@ MaxU的答案)或将列的dtype转换为str
然后传递:
test["order_date"] = pd.to_datetime(test["order_date"].astype(str))