将单独的日期和时间列合并到含NaT的日期时间列时出错
我们有一个日期列和一个时间列,如下所示,我们想要一个日期时间列。
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