4

私の以前のコードは、次のような pandas データフレームのリストのリストでした

rowResults = [ [df, df, df], [df, df, df], ... [df, df, df] ]
results=results.append(rowResults)

すべてのデータフレームにはまったく同じ列があるため、上記のリストを追加すると、データ構造全体が個々のデータフレームと同じ列を持つ単一のデータフレームに変換されました。

パフォーマンスの問題のため、小さなデータフレームをディクショナリに変換しました。大量のデータフレームを作成すると、pandas データフレームで使用されるメタデータ情報を格納する際に何らかのメモリ リークが発生することがわかります。代わりに辞書を使用すると、これは発生しません。

私の新しいコードは次のようになります

rowResults = [ [dict, dict, dict], [dict, dict, dict], ... [dict, dict, dict] ]
results=results.append(rowResults)

上記のコードは、通常の前のケースと同じ効果はありません。最終的なパンダのデータフレームが辞書キーの列と同じ列を持つように、上記の辞書のリストを変換するにはどうすればよいですか? 辞書の場合、私の出力は次のようになります

(Pdb) results
<class 'pandas.core.frame.DataFrame'>
Int64Index: 799 entries, 0 to 798
Data columns:
0                799  non-null values
1                799  non-null values
2                799  non-null values
column1            0  non-null values
column2            0  non-null values
column3            0  non-null values
column4            0  non-null values

お知らせ下さい。

4

1 に答える 1

5

上記のコードの下の使用サインを達成しました。これが最善の方法かどうか教えてください。以下のコードでは、各行が辞書のリストであることに注意してください。

frames=[]
for row in self.rowResults:
    frames.append(pandas.DataFrame(row))
self.results = pandas.concat(frames)
于 2013-01-23T03:52:18.677 に答える