time price
2015-11-18 00:00:00.000 42.02
2015-11-18 00:00:00.021 42.01
2015-11-18 00:00:00.126 42.01
2015-11-18 00:00:00.127 42.02
Name: price, dtype: float64
time price
2015-11-18 00:00:00.000 106.82
2015-11-18 00:00:00.020 106.82
2015-11-18 00:00:00.021 106.82
2015-11-18 00:00:00.207 106.82
2015-11-18 00:00:00.325 106.82
Name: price, dtype: float64
我想将这两个独特的DataFrames(让我们说一个是stock1,一个是stock2)合并到一个多索引(由stock1和stock2)DataFrame中,如下所示:
STOCK1 STOCK2
time price
2015-11-18 00:00:00.000 106.82 42.02
2015-11-18 00:00:00.126 106.82 42.01
2015-11-18 00:00:00.127 106.82 42.02
2015-11-18 00:00:00.020 106.82 42.02
2015-11-18 00:00:00.021 106.82 42.01
2015-11-18 00:00:00.021 106.82 42.01
2015-11-18 00:00:00.207 106.82 42.01
2015-11-18 00:00:00.325 106.82 42.01
当我尝试首先制作多指数时,我得到了
ValueError:无法从重复轴重新索引
尝试了ordered_merge但是没有得到正确的结果。
首先通过联盟重新索引Stock1和Stock2然后对它们进行多重索引是否有意义?实现结果的最佳流程是什么?
答案 0 :(得分:0)
当我读到它时,我丢失了日期信息,但这应该有效
In [37]: df = pd.concat([s1, s2], keys=['stock1', 'stock2'], axis=1).fillna(method='ffill')
In [38]: df.columns = pd.MultiIndex.from_product(['price', df.columns])
In [39]: df
Out[39]:
price
stock1 stock2
00:00:00.000 42.02 106.82
00:00:00.020 42.02 106.82
00:00:00.021 42.01 106.82
00:00:00.126 42.01 106.82
00:00:00.127 42.02 106.82
00:00:00.207 42.02 106.82
00:00:00.325 42.02 106.82
concat
这里基本上是索引标签的外连接/联合。
由于它们共享最外层,我的列级别与输入的方式相反。如果你真的想要它,就像在你的例子中一样,将最后一个翻转到pd.MultiIndex.from_product([df.columns, 'price'])