Как я могу объединить два фрейма данных на основе диапазона дат?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']})
df1['a'] = pd.to_datetime(df1.a)

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']})
df2['a'] = pd.to_datetime(df2.a)

И это ожидаемый результат. Я хочу объединить идентификатор из 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['b'] = df1.a + pd.Timedelta(hours=3)

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