Pandas 拼接系列
Splicing Together Series in Pandas
我有两个代表相同基础数据的系列,但一个是季度的(有更多的历史),第二个是月度的。我想将月度数据与季度数据拼接回来,这样我就能得到一个将两者结合起来的系列。最 "pandas" 的方法是什么?我已经将季度数据重新采样为月度数据。
示例代码:
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"))
我希望结果在 2012-01-31 之前是 ts1,之后是 ts2。
对于这种特定情况,您可以使用 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
我有两个代表相同基础数据的系列,但一个是季度的(有更多的历史),第二个是月度的。我想将月度数据与季度数据拼接回来,这样我就能得到一个将两者结合起来的系列。最 "pandas" 的方法是什么?我已经将季度数据重新采样为月度数据。
示例代码:
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"))
我希望结果在 2012-01-31 之前是 ts1,之后是 ts2。
对于这种特定情况,您可以使用 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