以下是一个示例代码,演示了如何比较一个包含日期时间的数据框和一个时间段的数据框:
import pandas as pd
# 创建包含日期时间的数据框
df1 = pd.DataFrame({'date_time': ['2021-01-01 10:00:00', '2021-01-02 12:00:00', '2021-01-03 15:00:00'],
'value': [1, 2, 3]})
# 创建时间段的数据框
df2 = pd.DataFrame({'start_time': ['2021-01-01 09:00:00', '2021-01-02 11:00:00', '2021-01-03 14:00:00'],
'end_time': ['2021-01-01 11:00:00', '2021-01-02 13:00:00', '2021-01-03 16:00:00'],
'event': ['A', 'B', 'C']})
# 将日期时间列转换为datetime类型
df1['date_time'] = pd.to_datetime(df1['date_time'])
df2['start_time'] = pd.to_datetime(df2['start_time'])
df2['end_time'] = pd.to_datetime(df2['end_time'])
# 比较日期时间是否在时间段内
df1['event'] = df1['date_time'].apply(lambda x: df2['event'][(x >= df2['start_time']) & (x <= df2['end_time'])].values[0] if any((x >= df2['start_time']) & (x <= df2['end_time'])) else '')
print(df1)
输出结果如下:
date_time value event
0 2021-01-01 10:00:00 1 A
1 2021-01-02 12:00:00 2 B
2 2021-01-03 15:00:00 3 C
在上述示例中,我们首先创建了一个包含日期时间的数据框df1
,和一个时间段的数据框df2
。然后,我们将日期时间列和时间段的起始时间、结束时间列转换为datetime类型。接下来,我们使用apply
函数遍历df1
中的每个日期时间值,并在df2
中找到与之匹配的时间段。如果找到匹配的时间段,则将对应的事件值赋给df1
的event
列。最后,我们打印出更新后的df1
。