主要目标 - 使用包含新值的新多索引重新索引DataFrame
In[34]: df = pd.DataFrame([[1,2,3], [1,4,2],[2,3,4], [2,2,1]], columns=['a', 'b', 'c'])
In[35]: df = df.set_index(['a', 'b'])
In[36]: df.index
Out[36]:
MultiIndex(levels=[[1, 2], [2, 3, 4]],
labels=[[0, 0, 1, 1], [0, 2, 1, 0]],
names=[u'a', u'b'])
In[37]: df_ri = df.reindex_axis([1,2,3,4], level='b', axis=0)
In[39]: df_ri
Out[39]:
c
a b
1 2 3
4 2
2 3 4
2 1
In[40]: df_ri.index
Out[40]:
MultiIndex(levels=[[1, 2], [1, 2, 3, 4]], #all new values are stored here but are not visible in df
labels=[[0, 0, 1, 1], [1, 3, 2, 1]],
names=[u'a', u'b'])
最后 - df输出没有改变。当我查看新索引时 - 它有新值,但它们没有显示。我可以通过使用新索引创建新的df然后将旧的df与新的df合并来避免这种情况 - 但这不是最好的方法。有什么建议吗?