【发布时间】:2017-11-04 02:29:59
【问题描述】:
我将时间序列 csv 文件导入到 pandas DataFrame,但是文件中的时间有一个怪癖。午夜设置为 '24:00:00',而不是 '00:00:00'(这是 python 日期时间喜欢的方式)。
为了在 pandas 中创建一个日期时间列,我做了以下操作(“日期”和“时间”都是字符串):
df['Date and Time'] = pd.to_datetime(df['Date'] + ' ' + df['Time'])
但是,datetime 要求时间的小时数介于 0 到 23 之间。我可以将 '24:00:00' 替换为 '00:00:00' 为:
df['Time'].replace('24:00:00', '00:00:00', inplace = True)
但这实际上是那天的早晨,而不是晚上。理想情况下,我会在日期上加一天,除非我不知道该怎么做。 我想说“在哪里 '时间' == '00:00:00' 在日期上加一天”。我尝试过这样的事情:
df['Date and Time'][df['Time'] == '00:00:00'] = df['Date and Time'[df['Time'] == '00:00:00'] + timedelta(days = 1)
但这不起作用(而且看起来很可怕)。
有什么想法可以让它发挥作用吗?
谢谢!
【问题讨论】:
-
也许检查this 发布
-
似乎我必须在循环中执行此操作,然后再将其放入 pandas 列。当然可行,只是似乎还有另一种更简单的方法。
-
你可以将它作为一个函数应用,只应用于 >= 24 的值。应该不会是低效的