2016-08-08 7 views
1

多分質問名が正確ではありません(私の質問を説明するための正確な単語がないので、申し訳ありません...)Pandas dataframeは、行情報が異なる行を生成しますが、適用機能はありません

次のデータフレームは、「week_id」と「USER_ID」との所得です、私は前の週の「収入」を含む新しい列を追加したい

week_id user income 
1  1 100 
1  2 50 
2  1 200 
2  2 30 
2  3 150 
3  1 100 
3  2 150 
.... 

次のようになります。

week_id user income previous_week_income 
1  1 100 0 
1  2 50  0 
2  1 200 100 
2  2 30  50 
2  3 150 0 
3  1 100 200 
3  2 150 30 
.... 

現在の行以外の他の行からの情報で新しい列を生成するように見えます。

私は適用機能の解決策を知っていますが、それは行ごとに、私のケースでは遅すぎるようです(起源のデータフレームは数千万の行かもしれません)。

バックグラウンドは予測分析の要因を生成するため、現在の週収入を予測する際に前週の収入を変数として使用したいと考えています。事前に

感謝:)

答えて

0

私は、各week_idがユニークusersを持っている場合は、fillnaDataFrameGroupBy.shiftが必要だと思う:

df['previous_week_income'] = df.groupby('user')['income'].shift().fillna(0) 
print (df) 
    week_id user income previous_week_income 
0  1  1  100     0.0 
1  1  2  50     0.0 
2  2  1  200     100.0 
3  2  2  30     50.0 
4  2  3  150     0.0 
5  3  1  100     200.0 
6  3  2  150     30.0 
+0

素晴らしい、おかげでたくさん:) – linpingta

+0

はありがとうございます。喜んであなたを助けることができます。 – jezrael

関連する問題