2016-05-25 6 views
0

私は機械学習モデルの特徴抽出に取り組んでいます。すべての行について、現在の価格を以前の価格と比較する必要があります。これを行うには、datetime列でデータフレームを並べ替え、行を繰り返し、プロダクトIDをキーに、最後の価格を値として辞書を保持します。私のデータセットは非常に大きく、練習セットでも5mの「販売台数」であり、テストセットでもあります。小さなサンプル(約250k製品)でも、非常に長い時間と多くのメモリを使用しています。私はコードの他の部分でも多くのベクトル化関数を使用しましたが、この部分をより効率的にする方法はわかりません。ここで私は今何をやっているだ:以前の値を取得するPandas

それはIDに基づいて反対差し引く前の値を取得することで何がやりたいように見えます
data = data.sort_values('date_time') 
previous_price = {} 
data_list = [] 
for index, value in data.iterrows(): 
    if value['prop_id'] in previous_price.keys(): 
     data_list.append(value['price_usd']-previous_price[value['prop_id']]) 
    else: 
     data_list.append(0) 
    previous_price[value['prop_id']] = value['price_usd'] 
data['previous_price_diff'] = data_list 
+2

あなたは 'data.groupby( 'prop_id')['price_usd']。diff()'の後にいますか? dfがdatetimeですでにソートされていると仮定して – EdChum

+0

はい、完璧!ありがとうございました –

答えて

2

、このためにあなたがgroupby使用することができます。

data.groupby('prop_id')['price_usd'].diff() 

これは 'prop_id'にグループ化され、行間の違いを返します

関連する問題