階層インデックスを使用したネストされた辞書値からの Pandas DataFrame の構築
最初のレベルのキーが UserIds を表す、ネストされた辞書 user_dict を考えます。第 2 レベルのキーはカテゴリ、第 3 レベルのキーはさまざまな属性です。目標は、第 3 レベルの値を使用して階層インデックスを持つ pandas DataFrame を構築することです。
これを達成するには、辞書のキーを階層インデックスを表すタプルに再形成する必要があります。 pd.DataFrame.from_dict を使用すると、正しいインデックス構造を持つ DataFrame を作成できます:
user_dict = {12: {'Category 1': {'att_1': 1, 'att_2': 'whatever'}, 'Category 2': {'att_1': 23, 'att_2': 'another'}}, 15: {'Category 1': {'att_1': 10, 'att_2': 'foo'}, 'Category 2': {'att_1': 30, 'att_2': 'bar'}}} pd.DataFrame.from_dict({(i,j): user_dict[i][j] for i in user_dict.keys() for j in user_dict[i].keys()}, orient='index') att_1 att_2 12 Category 1 1 whatever Category 2 23 another 15 Category 1 10 foo Category 2 30 bar
別のアプローチには、各辞書エントリから作成された個々の DataFrame を連結することが含まれます:
user_ids = [] frames = [] for user_id, d in user_dict.iteritems(): user_ids.append(user_id) frames.append(pd.DataFrame.from_dict(d, orient='index')) pd.concat(frames, keys=user_ids) att_1 att_2 12 Category 1 1 whatever Category 2 23 another 15 Category 1 10 foo Category 2 30 bar
両方メソッドは、ネストされた辞書の 3 番目のレベルの値を使用して、階層インデックスを持つ DataFrame を効果的に構築します。
以上がネストされた辞書から階層インデックスを使用して Pandas DataFrame を作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。