python pandas解析没有分隔符的日期'时间数据'060116'不匹配格式'%dd%mm%YY'(匹配)'

Posted

技术标签:

【中文标题】python pandas解析没有分隔符的日期\'时间数据\'060116\'不匹配格式\'%dd%mm%YY\'(匹配)\'【英文标题】:python pandas parse date without delimiters 'time data '060116' does not match format '%dd%mm%YY' (match)'python pandas解析没有分隔符的日期'时间数据'060116'不匹配格式'%dd%mm%YY'(匹配)' 【发布时间】:2017-01-31 13:40:39 【问题描述】:

我正在尝试解析如下所示的日期列,

date
061116
061216
061316
061416

但是,由于没有分隔符(例如“/”),我无法让 pandas 接受日期格式。我在下面尝试过,但收到错误:

ValueError: 时间数据 '060116' 与格式 '%dd%mm%YY' 不匹配(匹配)

pd.to_datetime(df['Date'], format='%dd%mm%YY')

【问题讨论】:

你确定你没有把所有东西都倒过来吗?它看起来像月日而不是日月 【参考方案1】:

你需要添加参数errors='coerce'to_datetime,因为1314月份不存在,所以这个日期转换为NaT

print (pd.to_datetime(df['Date'], format='%d%m%y', errors='coerce'))
0   2016-11-06
1   2016-12-06
2          NaT
3          NaT
Name: Date, dtype: datetime64[ns]

或者您可能需要用天交换月份:

print (pd.to_datetime(df['Date'], format='%m%d%y'))

0   2016-06-11
1   2016-06-12
2   2016-06-13
3   2016-06-14
Name: Date, dtype: datetime64[ns]

编辑:

print (df)
         Date
0  0611160130
1  0612160130
2  0613160130
3  0614160130

print (pd.to_datetime(df['Date'], format='%m%d%y%H%M', errors='coerce'))
0   2016-06-11 01:30:00
1   2016-06-12 01:30:00
2   2016-06-13 01:30:00
3   2016-06-14 01:30:00
Name: Date, dtype: datetime64[ns]

Python's strftime directives.

【讨论】:

很高兴能帮到你! 一旦答案允许,我将接受。如果我想在哪里解析类似的时间,例如 0130 aka 1:30,'%h%m' 对我有用吗? 我在答案中添加了解决方案。 非常感谢,我明白了 format 是 pandas 解释你给他们的格式的方式,它没有定义输出 感谢您的接受。我还在答案底部添加了链接,如果需要解析日期,这真的很有帮助。美好的一天!【参考方案2】:

您的日期格式错误。你有几天和几个月的颠倒。应该是:

 %m%d%Y

【讨论】:

以上是关于python pandas解析没有分隔符的日期'时间数据'060116'不匹配格式'%dd%mm%YY'(匹配)'的主要内容,如果未能解决你的问题,请参考以下文章

Python / Pandas将字符串解析为日期和时间[重复]

Python Pandas read_csv 函数不允许将解析日期更改为所需格式

使用 pandas 读取“csv”文件时解析日期时间

Python Pandas:将日期时间列分组为小时和分钟聚合

利用Python进行数据分析_Pandas_数据加载存储与文件格式

使用 Pandas 将数据框中的 Python 对象列转换为没有日期的时间