我正在迭代处理几个“组”,我想将它们一起添加到数据帧中,每个组都由第二级索引标识。
此:
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)
但最后一行完全破坏了我的多索引,我无法重建它。
你能帮我一把吗?
答案 0 :(得分:4)
应该能够使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)
还要记住,pandas'concat
适用于迭代器。像yield group
这样的东西可能比每次附加到列表更有效。我虽然没有介绍过它!