我的DataFrame(TradeData)的索引是字符串格式:
In [30]: TradeData.index Out[30]: Index(['09/30/2013 : 04:14 PM','09/30/2013 : 03:53 PM',... ],dtype=object)
我希望它能在Datetime.但转换似乎不起作用:
In [31]: TradeDataIdxd = pd.to_datetime(TradeData.index,format="%m/%d/%Y : %I:%M %p") Traceback (most recent call last): File "<ipython-input-31-1191c22cd132>",line 1,in <module> TradeDataIdxd = pd.to_datetime(TradeData.index,format="%m/%d/%Y : %I:%M %p") File "C:\WinPython-64bit-3.3.2.3\python-3.3.2.amd64\lib\site-packages\pandas\tseries\tools.py",line 128,in to_datetime return _convert_listlike(arg,Box=Box) File "C:\WinPython-64bit-3.3.2.3\python-3.3.2.amd64\lib\site-packages\pandas\tseries\tools.py",line 104,in _convert_listlike result = tslib.array_strptime(arg,format) File "tslib.pyx",line 1137,in pandas.tslib.array_strptime (pandas\tslib.c:18543) KeyError: 'p'
TradeData.index的所有元素都不是’p’.任何想法可能是什么问题?提前致谢.
解决方法
您可以通过重置索引,通过map / lambda / strptime操作系列,然后最终再次设置索引来绕过此to_datetime问题.
In [1058]: TradeData.index Out[1058]: Index([u'09/30/2013 : 04:14 PM',u'09/30/2013 : 03:53 PM',u'09/30/2013 : 03:53 PM'],dtype=object) In [1059]: index_name = TradeData.index.name In [1060]: TradeData = TradeData.reset_index() In [1061]: TradeData[index_name] = TradeData[index_name].map(lambda x: datetime.strptime(x,"%m/%d/%Y : %I:%M %p")) In [1062]: TradeData = TradeData.set_index(index_name) In [1063]: TradeData.index Out[1063]: <class 'pandas.tseries.index.DatetimeIndex'> [2013-09-30 16:14:00,...,2013-09-30 15:53:00] Length: 3,Freq: None,Timezone: None
def df_index_to_datetime(df,datetime_format): index_name = df.index.name df = df.reset_index() df[index_name] = df[index_name].map(lambda x: datetime.strptime(x,datetime_format)) df = df.set_index(index_name) return df
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。