pandas to_datetime不接受'24'作为时间

问题描述 投票:1回答:1

时间为YYYYMMDD格式。第一次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。

[

after

pandas datetime
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.