Python 如何使格式与时间数据匹配?

Python 如何使格式与时间数据匹配?,python,datetime,Python,Datetime,我想制作一些带有数据框的图形,我将其作为.csv文件读入python。日期的格式为1-Jan,但当我尝试使用以下行转换日期时间时: metdata['Date']=metdata['Date'].apply(lambda x: pd.to_datetime(str(x), format='%d-%MMM')) 它抛出以下错误: ValueError:时间数据“1-Jan”与格式“%d-%MMM”不匹配(匹配) 我不明白为什么数据与格式不匹配。有什么想法吗?熊猫一个月3个字母的正确格式是%b,因

我想制作一些带有数据框的图形,我将其作为
.csv
文件读入python。日期的格式为
1-Jan
,但当我尝试使用以下行转换日期时间时:

metdata['Date']=metdata['Date'].apply(lambda x: pd.to_datetime(str(x), format='%d-%MMM'))
它抛出以下错误:

ValueError:时间数据“1-Jan”与格式“%d-%MMM”不匹配(匹配)


我不明白为什么数据与格式不匹配。有什么想法吗?

熊猫一个月3个字母的正确格式是
%b
,因此

metdata['Date']=metdata['Date'].apply(lambda x: pd.to_datetime(str(x), format='%d-%b'))

如果您没有年份,它将自动添加,因为1900

pandas
使用与
datetime
相同的字符串格式(使用C的
strftime
)。你可以更多地了解它

格式化指令在
%
之后没有多个字母。我想您需要
%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)
[52]中的
:datetime.datetime.strtime('1-Jan','%d-%MMM'))
---------------------------------------------------------------------------
ValueError回溯(最近一次调用上次)
在()
---->1 datetime.datetime.strtime('1-Jan','%d-%MMM')
C:\Users\colinc719\Miniconda2\lib\ \u strtime.pyc in _strtime(数据字符串,格式)
330如果未找到:
331 raise VALUERROR(“时间数据%r与格式%r不匹配”%
-->332(数据字符串,格式))
333如果len(数据字符串)!=已找到。结束()
334 raise VALUE ERROR(“未转换的数据仍然:%s”%
ValueError:时间数据“1-Jan”与格式“%d-%MMM”不匹配
[53]中的datetime.datetime.strtime('1-Jan','%d-%b'))
Out[53]:datetime.datetime(1900,1,1,0,0)

这将错误更改为:ValueError:day超出了月份的范围,我假设这是因为%d调用了“零填充十进制数”根据你所附的链接。我想我需要将日期转换为两位数?是什么字符串导致它失败?啊啊啊啊啊,这是闰日在不正确的年份。非常尖锐,python。谢谢你的帮助!