Сращивание серии в пандах
У меня есть две серии, представляющие одни и те же базовые данные, но одна - ежеквартально (с большей историей), а вторая - ежемесячно. Я хотел бы объединить месячные данные с ежеквартальными данными, чтобы получить единый ряд, объединяющий их. Какой самый "панд" способ сделать это? Я уже пересчитал квартальные данные в месячные.
Пример кода:
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