Pandas中pd.to_datetime转换时间字符串报错:如何修正format参数匹配'31/03/21 00'?
解决Pandas时间格式转换的ValueError问题
你碰到的这个错误,核心问题出在格式字符串的写法不符合Pandas遵循的strftime规范——你漏掉了格式符号的%前缀,而且两位年份的代码也用错了。
正确的格式写法
直接把格式参数改成下面这样就能成功转换:
df['time'] = pd.to_datetime(df['time'], format='%d/%m/%y %H')
为什么这个格式能生效?
我们拆解下每个格式代码的对应含义:
%d:匹配两位数字的日期(比如你示例里的31)%m:匹配两位数字的月份(比如03)%y:匹配两位数字的年份(比如21,Pandas会自动将其解析为2021)%H:匹配24小时制的两位数字小时(比如00)
额外实用技巧
如果你的数据量不大,也可以让Pandas自动推断时间格式,省去手动写format的麻烦,不过这种方式在数据量较大时效率会稍低:
df['time'] = pd.to_datetime(df['time'], infer_datetime_format=True)
但更推荐手动指定format,尤其是当日期和月份的顺序容易混淆时(比如部分地区是月/日/年,而你的数据是日/月/年),手动指定能彻底避免解析错误。
内容的提问来源于stack exchange,提问作者Tobitor
相关产品推荐
相关产品推荐

