2017-11-10 11 views
1

私は1M行のDataFramesをdictに変換する必要があります。標準的なパンダの方法はかなり長いです。Python pandasでは、データフレームの変換速度を向上させる方法はありますか?

import pandas as pd 
import numpy as np 

df = pd.DataFrame(data={"col": np.ones(100000)}) 
%time dict = df.to_dict(orient="index").values() 

CPU times: user 5.88 s, sys: 81.3 ms, total: 5.96 s 
Wall time: 6.23 s 

このプロセスの速度を向上させる方法はありますか?

+1

値が必要な場合は、 'df.to_dict(orient =" r ")'を使用してください。 –

+0

なぜこれが必要ですか?目的を知ることができますか?私はなぜ個々のすべての行を辞書として意味するのですか? – Dark

+0

私はここで簡単に説明したフォーマット 'table'を持つJSONとして入力データを取り込む関数を持っています(https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.to_json.html)。日付を管理し、列を列挙し列挙する。私はテスト目的のために大規模なCSVからロードされたデータフレームからこのデータフォーマットを生成する必要があります。私のテストは、今すぐデータ準備に時間がかかります。 @cᴏʟᴅsᴘᴇᴇᴅの提案はすでに改善されています! – vwrobel

答えて

1

数値が必要な場合は、orient='records'を使用すると、パフォーマンスが大幅に向上します。

In [43]: %timeit df.to_dict('i').values() 
1 loop, best of 3: 6.23 s per loop 

In [42]: %timeit df.to_dict('r') 
1 loop, best of 3: 822 ms per loop 

'r'は、'records'の別名です。

また、rを使用する利点は、結果が既に一覧として表示されていることですが、前者ではdict_valueslistに変換する必要があります。

関連する問題