我有两个不相交的时间序列对象,例如
-ts1
Date Price
2010-01-01 1800.0
2010-01-04 1500.0
2010-01-08 1600.0
2010-01-09 1400.0
Name: Price, dtype: float64
-ts2
Date Price
2010-01-02 2000.0
2010-01-03 2200.0
2010-01-05 2010.0
2010-01-07 2100.0
2010-01-10 2110.0
如何将两者合并为一个应按日期排序的时间序列?喜欢
-ts3
Date Price
2010-01-01 1800.0
2010-01-02 2000.0
2010-01-03 2200.0
2010-01-04 1500.0
2010-01-05 2010.0
2010-01-07 2100.0
2010-01-08 1600.0
2010-01-09 1400.0
2010-01-10 2110.0
答案 0 :(得分:3)
使用pandas.concat
或DataFrame.append
加入,然后使用Date
列drop=True
,最后使用参数df3 = pd.concat([df1, df2]).sort_values('Date').reset_index(drop=True)
的默认索引DataFrame.sort_values
:
df3 = df1.append(df2).sort_values('Date').reset_index(drop=True)
替代:
print (df3)
Date Price
0 2010-01-01 1800.0
1 2010-01-02 2000.0
2 2010-01-03 2200.0
3 2010-01-04 1500.0
4 2010-01-05 2010.0
5 2010-01-07 2100.0
6 2010-01-08 1600.0
7 2010-01-09 1400.0
8 2010-01-10 2110.0
s3= pd.concat([s1, s2]).sort_index()
编辑:
如果TimeSeries然后解决方案是简化:
https://raml.org/developers/raml-100-tutorial
https://raml.org/developers/raml-200-tutorial
答案 1 :(得分:2)
您可以将每个索引设置为'Date'
并使用combine_first
ts1.set_index('Date').combine_first(ts2.set_index('Date')).reset_index()
Date Price
0 2010-01-01 1800.0
1 2010-01-02 2000.0
2 2010-01-03 2200.0
3 2010-01-04 1500.0
4 2010-01-05 2010.0
5 2010-01-07 2100.0
6 2010-01-08 1600.0
7 2010-01-09 1400.0
8 2010-01-10 2110.0
如果首先是系列赛,那么你可以简单地
ts1.combine_first(ts2)