4

いくつかの「グループ」を繰り返し処理しています。それらをデータフレームに追加し、すべてのグループを第 2 レベルのインデックスで識別したいと考えています。

これ:

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)

また、パンダconcatはイテレータで動作することに注意してください。yield group毎回リストに追加するよりも、次のような方が効率的かもしれません。プロファイリングしてないけど!

于 2013-11-21T04:05:19.800 に答える