Как я могу объединить два фрейма данных на основе диапазона дат?Python

Программы на Python
Anonymous
Как я могу объединить два фрейма данных на основе диапазона дат?

Сообщение Anonymous »

У меня есть два DataFrame: df1 и df2
import pandas as pd

df1 = pd.DataFrame(
{
'a': ['2024-01-01 04:00:00', '2023-02-02 20:00:00'],
'id':['a_1', 'a_2']

}
)

df2 = pd.DataFrame(
{
'a': [
'2024-01-01 4:00:00', '2024-01-01 05:00:00',
'2024-01-01 06:00:00', '2024-01-01 07:00:00',
'2024-01-01 08:00:00', '2024-01-01 09:00:00',
'2023-02-02 21:00:00', '2023-02-02 23:00:00',
]
}
)

И это ожидаемый результат. Я хочу объединить id из df1 в df2:
a id
0 2024-01-01 04:00:00 a_1
1 2024-01-01 05:00:00 a_1
2 2024-01-01 06:00:00 a_1
3 2024-01-01 07:00:00 a_1
4 2024-01-01 08:00:00 NaN
5 2024-01-01 09:00:00 NaN
6 2023-02-02 21:00:00 a_2
7 2023-02-02 23:00:00 a_2

Если вы знакомы со свечами, df1.a — это 4-часовая свеча. Например, df1.a.iloc[0]это:
2024-01-01 04:00:00
2024-01-01 05:00:00
2024-01-01 06:00:00
2024-01-01 07:00:00
По сути это диапазон от df1.a.iloc[0] до df1.a.iloc[0] + pd.Timedelta(hours=3). И я хочу объединить эти идентификаторы по диапазону часов, которые они охватывают.
Это моя попытка, но я не знаю, как объединить по диапазону дат:
df1['a'] = pd.to_datetime(df1.a)
df2['a'] = pd.to_datetime(df2.a)
df1['b'] = df1.a + pd.Timedelta(hours=3)

Вернуться в «Python»