【问题标题】:ValueError: time data ' 1:00:00' does not match format '%H:%M:%S'ValueError: 时间数据“1:00:00”与格式“%H:%M:%S”不匹配
【发布时间】:2017-03-05 09:46:50
【问题描述】:

我正在尝试将字符串转换为 'datetime64[ns]' 格式。小时是非零填充的,我猜这可能会导致问题。

数据示例:

1    8:49:15
2    8:49:16
3    8:49:17
Name: time, dtype: object

我用来将字符串转换为时间的代码:

dfp['time'] = pd.to_datetime(dfp['time'], format='%H:%M:%S')

我也试过了:

time_tansformed = []

for t in dfp['time']:
    time_i = datetime.datetime.strptime(t, "%H:%M:%S")
    time_tansformed.append(time_i)

我得到了同样的错误:

ValueError: time data ' 1:00:00' does not match format '%H:%M:%S' (match)

我在 Win10 上使用 Python 3.5 (Anaconda)。

如何将其转换为时间格式? 我应该添加 0 来填充小时数还是有其他方法?

【问题讨论】:

  • 你试过pd.to_datetime(dfp['time'])(不指定格式)吗?
  • 是的。它没有用。它给出了一个错误:'OutOfBoundsDatetime: Out of bounds nanosecond timestamp: 1-01-01 01:00:00'
  • pd.to_datetime(dfp['time']) 在没有指定格式的情况下为带有前导空格的字符串工作...我使用的是 Pandas 0.19.0

标签: python datetime pandas time strptime


【解决方案1】:

字符串中有一个前导空格:

' 1:00:00'

这样做:

dfp['time'] = pd.to_datetime(dfp['time'].strip(), format='%H:%M:%S')

【讨论】:

  • 这是前导空格,而不是尾随空格。
  • 问题已解决。删除前导空格解决了问题。
猜你喜欢
  • 1970-01-01
  • 2014-09-27
  • 1970-01-01
  • 1970-01-01
  • 2019-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-15
相关资源
最近更新 更多