7

私が持っている現在のデータ構造は次のとおりです。

{'bin1': {'A': 14545,
          'B': 18579,
          'C': 5880,
          'D': 20771,
          'E': 404396},
 'bin2': {'A': 13200,
          'B': 12279,
          'C': 5000,
          'D': 16766,
          'E': 200344},
 [...] }

そして、次の形式でテーブルに書き込みたいと思います。

        A     B     C    D     E    
bin1  14545 18579 5880 20771 494396
bin2  13200 12279 5000 16766 200344
...

現在、私は粗い印刷ループを使用しています(d ==上記の辞書):

# print the table header
labs = [i for i in d[d.keys()[0]]]
print "bin" + "\t" + "\t".join(labs)

# loop and print the values
for j in d:
    print j + "\t" + "\t".join(map(str, [d[j][q] for q in d[j]]))

(明らかに順序付けされていないにもかかわらず)動作するように見えましたが、私の出力では、一部のネストされた辞書にすべてのフィールド AE が含まれていないことがわかりました。これを行う1つの方法は、おそらくより適切なマトリックス型のデータ構造を使用して辞書を再構築し、欠損値を で埋めること0だと思いますが、この巨大なネストされた辞書を手元に持っている場合、上記の出力は、欠落している要素を処理できますか?

4

2 に答える 2

8

パンダの使用:

import pandas as pd

data = {'bin1': {'A': 14545,
          'B': 18579,
          'C': 5880,
          'D': 20771,
          'E': 404396},
        'bin2': {'A': 13200,
          'D': 16766,
          'E': 200344},
        }

df = pd.DataFrame(data).T
df.fillna(0, inplace=True)
print(df)

版画

          A      B     C      D       E
bin1  14545  18579  5880  20771  404396
bin2  13200      0     0  16766  200344

df.fillna(0)欠損値を 0 に置き換えます。

于 2013-09-11T16:23:55.027 に答える