Сращивание серии в пандах

У меня есть две серии, представляющие одни и те же базовые данные, но одна - ежеквартально (с большей историей), а вторая - ежемесячно. Я хотел бы объединить месячные данные с ежеквартальными данными, чтобы получить единый ряд, объединяющий их. Какой самый "панд" способ сделать это? Я уже пересчитал квартальные данные в месячные.

Пример кода:

ts1 = pd.Series(data=1, index=pd.DatetimeIndex(freq="Q", start="2000-03-31", end="2016-03-31")).resample("M").last().ffill()
ts2 = pd.Series(data=2, index=pd.DatetimeIndex(freq="M", start="2012-01-31", end="2016-03-31"))

Я хотел бы, чтобы результат был ts1 до 2012-01-31 и ts2 после.

1 ответ

Решение

Для этого конкретного случая вы можете использовать combine_first:

ts2.combine_first(ts1)

Это будет принимать значения из ts2 если обе серии содержат одинаковые индексы, а из ts1 если только ts1 имеет этот индекс.

Вы также можете использовать pd.concat:

pd.concat((ts1[:'20120130'], ts2))

pd.concat((ts1[:'20120130'], ts2)).equals(ts2.combine_first(ts1))
Out: True
Другие вопросы по тегам