Наложить один DataFrame на другой по Datetime
В первом датафрейме у меня значения с интервалом раз в минуту
DateTime1 Value1
2021-01-15 17:19:00 73.681
2021-01-15 17:20:00 73.694
2021-01-15 17:21:00 73.704
2021-01-15 17:22:00 73.708
Во втором значения располагаются в другое время с точностью до секунды
DateTime2 Value2
2021-01-15 17:20:11 73.6768
2021-01-15 17:20:16 73.6767
2021-01-15 17:20:58 73.6700
2021-01-15 17:21:01 73.6584
2021-01-15 17:21:08 73.6614
Я бы хотел их наложить по дате, чтобы в итоговом датафрейме были и Value1 и Value2 по типу:
DateTime Value1 Value2
2021-01-15 17:19:00 73.681 NaN
2021-01-15 17:20:00 73.694 NaN
2021-01-15 17:20:11 NaN 73.6768
2021-01-15 17:20:16 NaN 73.6767
2021-01-15 17:20:58 NaN 73.6700
2021-01-15 17:21:00 73.704 NaN
2021-01-15 17:21:01 NaN 73.6584
2021-01-15 17:21:08 NaN 73.6614
2021-01-15 17:22:00 73.708 NaN
Я пробовал .join и .merge, но они либо исключали значения первого, которые не включены во второе, либо добавляли значения второго датафрейма в конец первого, а я бы хотел их именно наложить друг на друга
Ответы (1 шт):
Автор решения: strawdog
→ Ссылка
Вообще ваша задача решается простым merge, если я правильно понял вопрос.
при ваших данных делаем просто
df1=pd.read_csv("Values1.csv", sep=";", index_col=0, parse_dates=["DateTime1"])
df2=pd.read_csv("Values2.csv", sep=";", index_col=0, parse_dates=["DateTime2"])
res = pd.merge(df1,df2, how='outer', left_index=True, right_index=True)
получаем res:
Value1 Value2
2021-01-15 17:19:00 73.681 NaN
2021-01-15 17:20:00 73.694 NaN
2021-01-15 17:20:11 NaN 73.6768
2021-01-15 17:20:16 NaN 73.6767
2021-01-15 17:20:21 NaN 73.6807
2021-01-15 17:20:25 NaN 73.6759
2021-01-15 17:20:30 NaN 73.6794
2021-01-15 17:20:35 NaN 73.6765
2021-01-15 17:20:41 NaN 73.6654
2021-01-15 17:20:47 NaN 73.6650
2021-01-15 17:20:53 NaN 73.6725
2021-01-15 17:20:58 NaN 73.6700
2021-01-15 17:21:00 73.704 NaN
2021-01-15 17:21:01 NaN 73.6584
2021-01-15 17:21:08 NaN 73.6614
2021-01-15 17:22:00 73.708 NaN