将单独的日期和时间列合并到含NaT的日期时间列时出错

0 投票
1 回答
45 浏览
提问于 2025-04-13 20:22

我们有一个日期列和一个时间列,如下所示,我们想要一个日期时间列。

df['date'] = pd.to_datetime(df['date'], format='%Y%m%d', errors='coerce').dt.date
df['time'] = pd.to_datetime(df['time'] ,format='%H:%M:%S', errors = 'coerce').dt.time
df['datetime']=df['date'] + df['time']

但是,我总是收到以下错误信息。

TypeError: unsupported operand type(s) for +: 'datetime.date' and 'datetime.time'

1 个回答

0

试试这个:

import pandas as pd
from datetime import datetime

# Sample DataFrame
data = {'date': ['20240101', '20240102'],
        'time': ['12:00:00', '13:30:00']}
df = pd.DataFrame(data)

# Convert date and time columns to datetime objects
df['date'] = pd.to_datetime(df['date'], format='%Y%m%d', errors='coerce').dt.date
df['time'] = pd.to_datetime(df['time'], format='%H:%M:%S', errors='coerce').dt.time

# Combine date and time into datetime column
df['datetime'] = df.apply(lambda row: datetime.combine(row['date'], row['time']), axis=1)

print(df)

输出结果:

         date      time            datetime
0  2024-01-01  12:00:00 2024-01-01 12:00:00
1  2024-01-02  13:30:00 2024-01-02 13:30:00

更新:根据更新后的问题,处理你时间列中的缺失值(NaT):

import pandas as pd
from datetime import datetime, time

# Sample DataFrame
data = {'date': ['20240101', '20240102'],
        'time': ['12:30:00', None]}  # Adding a None value to simulate missing data

df = pd.DataFrame(data)

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

df['time'] = pd.to_datetime(df['time'], format='%H:%M:%S', errors='coerce').dt.time.fillna(time(0, 0))

df['datetime'] = pd.to_datetime(df['date'].astype(str) + ' ' + df['time'].astype(str))

print(df)

输出结果:

         date      time            datetime
0  2024-01-01  12:30:00 2024-01-01 12:30:00
1  2024-01-02  00:00:00 2024-01-02 00:00:00

撰写回答