У меня есть два time-series
ниже. df1
имеет индекс в формате DateTime, который включает date
и hour
без минуты и секунды. df2
имеет полный указатель даты и времени, также в формате DateTime. В полных данных, df1 намного короче, чем df2 с точки зрения количества строк. Datetime
Индекс двух df
учитывает часовой пояс (tz).
Как вы можете видеть, время обоих наборов данных варьируется от 4 до 8 утра. Однако df1
пропускает несколько часов, а в df2
доступны все часы. Примечание: в этом примере пропускаются только нечетные часы, но в полных данных это не так.
df1
value1
date
2016-04-01 04:00:00+07:00 16
2016-04-01 06:00:00+07:00 76
2016-04-01 08:00:00+07:00 23
df2
value2
DateTime
2016-04-01 04:00:00+07:00 257.96
2016-04-01 04:15:00+07:00 317.58
2016-04-01 04:30:00+07:00 333.39
2016-04-01 04:45:00+07:00 333.39
2016-04-01 05:00:00+07:00 449.96
2016-04-01 05:15:00+07:00 466.42
2016-04-01 05:30:00+07:00 498.56
2016-04-01 05:45:00+07:00 454.73
2016-04-01 06:00:00+07:00 472.45
2016-04-01 06:15:00+07:00 489.85
2016-04-01 06:30:00+07:00 169.54
2016-04-01 06:45:00+07:00 276.13
2016-04-01 07:00:00+07:00 293.70
2016-04-01 07:15:00+07:00 108.05
2016-04-01 07:30:00+07:00 179.21
2016-04-01 07:45:00+07:00 201.80
2016-04-01 08:00:00+07:00 201.80
2016-04-01 08:15:00+07:00 201.80
2016-04-01 08:30:00+07:00 201.80
2016-04-01 08:45:00+07:00 201.80
Я хочу объединить два набора данных по индексу. df1 должен контролировать , какой час хранить. ожидаемый результат ниже.
value2 value1
DateTime
2016-04-01 04:00:00+07:00 257.96 16
2016-04-01 04:15:00+07:00 317.58 16
2016-04-01 04:30:00+07:00 333.39 16
2016-04-01 04:45:00+07:00 333.39 16
2016-04-01 06:00:00+07:00 472.45 76
2016-04-01 06:15:00+07:00 489.85 76
2016-04-01 06:30:00+07:00 169.54 76
2016-04-01 06:45:00+07:00 276.13 76
2016-04-01 08:00:00+07:00 201.80 23
2016-04-01 08:15:00+07:00 201.80 23
2016-04-01 08:30:00+07:00 201.80 23
2016-04-01 08:45:00+07:00 201.80 23
Это моя попытка.
result = pd.concat([df2, df1], sort=True)
# returns no error. only combine the two df horizontally. df1 does not control the DateTime index in the result.
result = df2.merge(df1, left_index=True, right_index=True)
# returns error.