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。谢谢你的帮助!