我想用数据框制作一些图表,我将其作为.csv
文件读入python。日期格式为1-Jan
但是当我尝试使用以下行转换日期时间时:
metdata['Date']=metdata['Date'].apply(lambda x: pd.to_datetime(str(x), format='%d-%MMM'))
它抛出了这个错误:
ValueError:时间数据' 1-Jan'不符合格式'%d-%MMM' (匹配)
我无法弄清楚为什么数据与格式不匹配。有什么想法吗?
答案 0 :(得分:0)
pandas中3个字母月的正确格式为%b
,因此
metdata['Date']=metdata['Date'].apply(lambda x: pd.to_datetime(str(x), format='%d-%b'))
如果您没有年份,它将自动添加为1900
答案 1 :(得分:0)
pandas
使用与datetime
相同的字符串格式(使用C' s strftime
)。您可以阅读更多here
格式化指令在%
之后不能有多个字母。我想你想要%d-%b
In [52]: datetime.datetime.strptime('1-Jan', '%d-%MMM')
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-52-946e04d8e511> in <module>()
----> 1 datetime.datetime.strptime('1-Jan', '%d-%MMM')
C:\Users\colinc719\Miniconda2\lib\_strptime.pyc in _strptime(data_string, format)
330 if not found:
331 raise ValueError("time data %r does not match format %r" %
--> 332 (data_string, format))
333 if len(data_string) != found.end():
334 raise ValueError("unconverted data remains: %s" %
ValueError: time data '1-Jan' does not match format '%d-%MMM'
In [53]: datetime.datetime.strptime('1-Jan', '%d-%b')
Out[53]: datetime.datetime(1900, 1, 1, 0, 0)