私は "flatten"したい辞書の大きい(ish)Series
を持っています。一連の辞書をDataFrameに効率的に変換する
>>> my_series = pd.Series([{'A': [1], 'B' : []}, {'A' : [1, 2], 'B' : [3, 4]}])
>>> my_series
0 {u'A': [1], u'B': []}
1 {u'A': [1, 2], u'B': [3, 4]}
dtype: object
次のステップは、階層的なインデックスを持つ「DATAFRAME」に変換されています。テストするために/私は同様の構造でSeries
を作成している私の問題を再現私は、機能的に動作する方法を発見した:これは私が欲しいものを私に与え
>>> pd.DataFrame(pd.DataFrame.from_dict(row, orient='index').stack() for row in my_series)
A B
0 1 0 1
0 1.0 NaN NaN NaN
1 1.0 2.0 3.0 4.0
を、私の実際のデータセットで、それはリストのそれぞれに0-4要素と3万行のために約60秒を取って、法外遅いです、およそ8GのRAMを使用しています。
私はmultiprocessing
モジュールで並列処理を使って試してみましたが、もっと速い方法があるかどうかここで尋ねると思いました。
もっと合理的な時間に上記と同じ結果を達成することはできますか?
@Kasramvd - 先端に感謝:) – arman