2017-11-06 13 views
0

I持って、次の辞書:私はパンダDATAFRAMEにこの辞書を変換し、それを確認するにはどうすればよいパンダと辞書:データフレームにDictのを変換し、データフレームの列ヘッダとして値を内部キーを使用

{ 
0: [{1: 0.0}, {2: 0.0}, {3: 0.0}, {4: 0.0}, {5: 0.0}, {6: 0.0}, {7: 0.0}, {8: 0.0}], 
1: [{1: 0.0}, {2: 0.0}, {3: 0.0}, {4: 0.0}, {5: 0.0}, {6: 0.0}, {7: 0.0}, {8: 0.0}], 
2: [{1: 0.21150571615476177}, {2: 0.20021993193784904}, {3: 0.24673408701244148}, {4: 0.26073319330403394}, {5: 0.0}, {6: 0.27012912297379343}, {7: 0.0}, {8: 0.0}], 
3: [{1: 0.2786416467397351}, {2: 0.2006495239101905}, {3: 0.21600480247194567}, {4: 0.25724906204967557}, {5: 0.0}, {6: 0.26817162148227375}, {7: 0.0}, {8: 0.0}], 
4: [{1: 0.2755030949011681}, {2: 0.20315735111595443}, {3: 0.21705903867972787}, {4: 0.2564000954604151}, {5: 0.0}, {6: 0.26903863724054405}, {7: 0.0}, {8: 0.0}], 
5: [{1: 0.27334751895045045}, {2: 0.2012256178641117}, {3: 0.22266330432504813}, {4: 0.25925509529304697}, {6: 0.27562843736621906}], 
6: [{1: 0.27739942084587565}, {2: 0.198682325880847}, {3: 0.2169017627591854}, {4: 0.25843774856843105}, {6: 0.26996683786070946}], 
7: [{1: 0.2726461255684456}, {2: 0.19778567408338052}, {3: 0.2197858176643358}, {4: 0.26053721842016453}, {6: 0.26812789513005875}] 
} 

各値の内部キーは、対応する行値の列ヘッダーですか?行5、6及び7においてインナーキー5、図7及び図8の値は、私は次のようにデータフレームが必要であることを意味し、欠落していること

  1   2   3   4   5   6 7 8 
0 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.0 0.0 
1 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.0 0.0 
2 0.211651 0.202256 0.244509 0.256969 0.000000 0.275521 0.0 0.0 
3 0.273670 0.199995 0.222494 0.256303 0.000000 0.275037 0.0 0.0 
4 0.280948 0.200235 0.218654 0.256737 0.000000 0.276424 0.0 0.0 
5 0.281718 0.197531 0.217461 0.256043  NaN 0.271181 NaN NaN 
6 0.279024 0.200089 0.218020 0.261419  NaN 0.272113 NaN NaN 
7 0.278222 0.203448 0.219254 0.261846  NaN 0.269600 NaN NaN 

(値は任意であり、彼らが何であるかは関係ありません)。
私はpd.to_csv()を使用してDataFrameをCSVファイルに出力することを知っている以外は出発点がありません。
ご協力いただければ幸いです。前もって感謝します。 (Ubuntuの14.04 32ビットVMとPython 2.7を使用して)

P.S.同様の質問は、文章を適切にフレーミングしないために混乱した他のユーザーがいたため、未回答のままでした。その後、削除されました。
この質問が明確で正確であることを願っています。

答えて

1

リスト内包してから少しハックで使用concat - 2番目のレベルですべての列の合計、すべての非NaNの列に参加するもの:

df = pd.concat({k: pd.DataFrame(v) for k,v in d.items()}, 1).stack().T.sum(level=1, axis=1) 
print (df) 
      1   2   3   4 5   6 7 8 
0 0.000000 0.000000 0.000000 0.000000 0.0 0.000000 0.0 0.0 
1 0.000000 0.000000 0.000000 0.000000 0.0 0.000000 0.0 0.0 
2 0.211506 0.200220 0.246734 0.260733 0.0 0.270129 0.0 0.0 
3 0.278642 0.200650 0.216005 0.257249 0.0 0.268172 0.0 0.0 
4 0.275503 0.203157 0.217059 0.256400 0.0 0.269039 0.0 0.0 
5 0.273348 0.201226 0.222663 0.259255 NaN 0.275628 NaN NaN 
6 0.277399 0.198682 0.216902 0.258438 NaN 0.269967 NaN NaN 
7 0.272646 0.197786 0.219786 0.260537 NaN 0.268128 NaN NaN 

詳細:最後に

print (pd.concat({k: pd.DataFrame(v) for k,v in d.items()}, 1).stack().T) 
      0   1   2   3 4     5 6 7 
      1   2   3   4 5   6   6 7 8 
0 0.000000 0.000000 0.000000 0.000000 0.0  NaN 0.000000 0.0 0.0 
1 0.000000 0.000000 0.000000 0.000000 0.0  NaN 0.000000 0.0 0.0 
2 0.211506 0.200220 0.246734 0.260733 0.0  NaN 0.270129 0.0 0.0 
3 0.278642 0.200650 0.216005 0.257249 0.0  NaN 0.268172 0.0 0.0 
4 0.275503 0.203157 0.217059 0.256400 0.0  NaN 0.269039 0.0 0.0 
5 0.273348 0.201226 0.222663 0.259255 NaN 0.275628  NaN NaN NaN 
6 0.277399 0.198682 0.216902 0.258438 NaN 0.269967  NaN NaN NaN 
7 0.272646 0.197786 0.219786 0.260537 NaN 0.268128  NaN NaN NaN 
+0

、何を得たI欲しかったありがとう@jezrael – user136819

関連する問題