熊猫to_datetime不接受“ 24”作为时间

时间:2019-04-15 03:56:04

标签: pandas datetime

时间采用YYYYMMDDHH格式。第一次2010010101,增加1小时,到达2010010124,然后到2010010201。

    date
0   2010010101
1   2010010124
2   2010010201

df['date'] = pd.to_datetime(df['date'], format ='%Y%m%d%H')

我遇到错误:

  

'int'对象无法切片

如果我跑步:

df2['date'] = pd.to_datetime(df2['date'], format ='%Y%m%d%H', errors = 'coerce')

所有'24'小时都标记为NaT。

[before[1]

after

1 个答案:

答案 0 :(得分:1)

时间从00(午夜)开始到23,因此您日期中的时间24是第二天的00。一种方法是定义一个自定义的to_datetime以处理日期格式。

df = pd.DataFrame({'date':['2010010101', '2010010124', '2010010201']})

def custom_to_datetime(date):
    # If the time is 24, set it to 0 and increment day by 1
    if date[8:10] == '24':
        return pd.to_datetime(date[:-2], format = '%Y%m%d') + pd.Timedelta(days=1)
    else:
        return pd.to_datetime(date, format = '%Y%m%d%H')

df['date'] = df['date'].apply(custom_to_datetime)  


    date
0   2010-01-01 01:00:00
1   2010-01-02 00:00:00
2   2010-01-02 01:00:00