4

我正在迭代处理几个“组”,我想将它们一起添加到数据框中,每个组都由二级索引标识。

这个:

print pd.concat([df1, df2, df3], keys=["A", "B", "C"])

有人向我建议 - 但它在迭代中效果不佳。

我目前正在做

data_all = pd.DataFrame([])
    for a in a_list:
        group = some.function(a, etc)
        group = group.set_index(['CoI'], append=True, drop=True)
        group = group.reorder_levels(['CoI','oldindex'])
        data_all = pd.concat([data_all, group], ignore_index=False)

但是最后一行完全破坏了我的多索引,我无法重建它。

你能帮我个忙吗?

4

1 回答 1

7

应该能够只data_all列出一个列表并在最后连接一次:

data_all = []
for a in a_list:
    group = some.function(a, etc)
    group = group.set_index(['CoI'], append=True, drop=True)
    group = group.reorder_levels(['CoI','oldindex'])
    data_all.append(group)

data_all = pd.concat(data_all, ignore_index=False)

还要记住,pandasconcat与迭代器一起工作。类似的东西yield group可能比每次都附加到列表更有效。虽然我没有介绍它!

于 2013-11-21T04:05:19.800 回答