我有两个数据帧:
a.head()
AAPL SPY date
0 1000000.000000 1000000.000000 2010-01-04
1 921613.643818 969831.805642 2010-02-04
2 980649.393244 1000711.933790 2010-03-04
3 980649.393244 1000711.933790 2010-04-04
4 1232535.257461 1059090.504583 2010-05-04
和
b.head()
date test
0 2010-01-26 22:17:44 990482.664854
1 2010-03-09 22:37:17 998565.699784
2 2010-03-12 02:11:23 989957.374785
3 2010-04-05 18:01:37 994315.860439
4 2010-04-06 11:06:50 987887.723816
在设置a
和b
(set_index('date')
)的索引后,我可以使用pandas plot()
函数创建一个漂亮的图,日期为x -axis和各列作为y值。 我想要做的是在同一个数字上绘制两个具有不同索引的数据框。从a
和b
可以看出,索引是不同的,我想在同一个数字上绘制它们。
我尝试merge
和concat
将数据框连接在一起,但结果图不是我想要的,因为这些函数在日期不是的地方插入numpy.NaN
同样,这使我的情节不连续。我可以使用pd.fillna()
,但这不是我想要的,因为我宁愿只将点连接在一起而不是下降到0。
答案 0 :(得分:1)
假设您想在x轴上使用相同的时间刻度,那么在连接列之前,您需要时间戳作为a
和b
的索引。
然后,您可以使用interpolation填写缺失的数据,如果您想要填写最后观察到的数据点,可以选择使用ffill()
作为附加操作。
df = pd.concat([a, b.set_index('date')], axis=1)
df.interpolate(method='time').plot() # interpolate(method='time').ffill()