将数据从一个多索引数据帧复制到pandas中的其他多索引

时间:2017-08-11 06:18:30

标签: python pandas dataframe multi-index copy-assignment

我正在尝试将多索引数据帧复制到另一个数据帧,但是,它无法以某种方式工作。这是玩具的例子。

arrays = [np.array(['bar', 'bar', 'baz', 'baz', 'foo', 'foo', 'qux', 'qux']), \
          np.array(['one', 'two', 'one', 'two', 'one', 'two', 'one', 'two'])]
df = pd.DataFrame(np.random.randn(8, 4), index=arrays)

mindx = df.index.set_names(['X', 'Y'])
df = df.set_index(mindx)


             0          1            2         3
X   Y               
bar one -2.327132   -0.119892   -0.288562   0.767718
    two -0.056876   -0.105477   1.012807    -0.088878
baz one 1.661728    0.924212    -0.618278   0.119823
    two 1.131492    -0.857924   0.711160    -0.029915
foo one 0.895299    -0.605197   0.227541    1.892720
    two -0.203198   0.507463    -1.573138   1.052957
qux one -0.751430   1.871923    0.359925    -2.157044
    two -0.924937   -1.830958   0.934699    0.909292

现在,我想将此数据帧分配给另一个以这种方式初始化的多索引数据帧:

my_index = pd.MultiIndex(levels=[[],['one', 'two']],\
                     labels=[[],[]],\
                     names=[u'X', u'Y'])
df_mult = pd.DataFrame(index=my_index, columns=df.columns)

要复制,我使用以下命令,它什么都不做。我无法理解为什么会这样?

df_mult.loc[pd.IndexSlice[:, 'one'], :] = df.copy()

任何帮助将不胜感激。提前致谢。

0 个答案:

没有答案