【问题标题】:How to parse multiple pandas Datetime formats如何解析多个熊猫日期时间格式
【发布时间】:2015-01-21 02:26:30
【问题描述】:

我有一个 pandas 数据框,不幸的是,它从以下位置切换日期时间格式:

到:

我需要将 df['DT'] 解析为 Datetime,然后是 DatetimeIndex。它似乎有效,但随后保留了两种类型的日期时间:

df['Datetime'] = pd.to_datetime(df['DT'])
df = df.set_index('Datetime')
del df['DT']

但熊猫时间序列功能不起作用,即:

from datetime import time
df.between_time(time(0),time(8,59,59))

抛出错误:TypeError: Index must be DatetimeIndex。

因此,我想知道如何将这两种不同的日期时间格式解析为一个日期时间索引。谢谢你的帮助!

【问题讨论】:

    标签: python datetime pandas time-series


    【解决方案1】:

    首先,尝试以下方法:

    In[54]: b = '2010-10-02T24:00:00+0000'
    
    In[55]: pd.to_datetime(b,errors='raise')
    (... ...)
    ValueError: hour must be in 0..23
    

    这告诉你变量 {b} 的日期时间格式是错误的。所以这里有两个选择。第一个是修正str格式(将“24”修改为“00”),然后应用{pd.to_datetime}函数:

    In[56]: df
    Out[56]: 
                                  0
    0  11/23/2014 01:37:00 AM +0000
    1      2010-10-02T00:00:00+0000
    
    In[57]: pd.to_datetime(df[0])
    Out[57]: 
    0   2014-11-23 01:37:00
    1   2010-10-02 00:00:00
    Name: 0, dtype: datetime64[ns]
    

    第二个是在 {pd.to_datetime} func 中指定格式,以便它可以识别你的特殊 str 格式(如果你想在这种情况下保留你的时间信息,这不是很简单)

    【讨论】:

    • 感谢您的回复。我实际上没有注意到第二种日期时间格式格式如此错误。鉴于我有大约 370,000 行好的数据,我认为简单地删除格式错误的行是最有意义的,因为它们构成的数据不到 1%。然后问题就消失了!
    猜你喜欢
    • 2020-12-16
    • 1970-01-01
    • 2019-02-24
    • 2020-11-16
    • 2021-02-17
    • 2020-06-04
    • 1970-01-01
    • 2020-02-21
    相关资源
    最近更新 更多