dfインデックスとして外部キーを使用し、内部キーの列ヘッダーを使用して、ネストされたdictからパンダデータフレームを作成します

マラクジャ

私は以下のような入れ子の辞書を持っています

dictA = {X:{A: 0.2, B:0.3, C:0.4} ,Y:{A: 0.05, B:0.8, C:0.1},Z:{A: 0.15, B:0.6, C:0.25}}

最初のキーがインデックスに対応し、ネストされた辞書のキーが列ヘッダーであるデータフレームを作成したいと思います。例えば、

     A    B    C
  X  0.2  0.3  0.4 
  Y  0.05 0.8  0.1
  Z  0.15 0.6  0.25

私は、外側のdictからリストに(リスト内包表記を使用して)キーを引き出すことができることを知っています:

index_list = [key for key in dictA.iterkeys()]

次に、ネストされた辞書を1つの辞書に入れます。

dict_list = [value for value in dictA.itervalues()]
final_dict = {k: v for dict in dict_list for k, v in dict.items()}

最後にdf、次の方法で作成できます

df = pd.DataFrame(final_dict, index = index_list)

問題は、正しい値を正しいインデックスにマップする必要があることです。これは、通常の辞書が変更されたときに困難です。

私が上で提案したものとは完全に異なり、より効率的な方法があると思います、助けてください?

アナンドSクマール

dictADataFrameに変換してから転置するだけで、列をインデックスに、インデックスを列にできます。例-

df = pd.DataFrame(dictA).T

デモ -

In [182]: dictA = {'X':{'A': 0.2, 'B':0.3, 'C':0.4} ,'Y':{'A': 0.05, 'B':0.8, 'C':0.1},'Z':{'A': 0.15, 'B':0.6, 'C':0.25}}

In [183]: df = pd.DataFrame(dictA).T

In [184]: df
Out[184]:
      A    B     C
X  0.20  0.3  0.40
Y  0.05  0.8  0.10
Z  0.15  0.6  0.25

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ