2016-10-07 6 views
1

私は、そこからいくつかのフィーチャを計算する必要があるデータフレームを持っています。データフレームdfは、オブジェクトとイベントのために次のようになります。私は、各idとevent_idを(基本的にはそれぞれの行)のために知っておく必要があります。このことから複数の行を処理する必要があるpandasデータフレームの計算方法?

id event_id event_date age money_spent rank 
1  100  2016-10-01 4  150   2 
2  100  2016-09-30 5  10    4  
1  101  2015-12-28 3  350   3 
2  102  2015-10-25 5  400   5  
3  102  2015-10-25 7  500   2 
1  103  2014-04-15 2  1000   1 
2  103  2014-04-15 3  180   6 

は、最後のイベントの日付以降の日数何でした、総資金は、その日までに平均を使います。その日までに費やした金額、最後の3イベントのランクなど

このような問題を扱う最も良い方法は、各行に対して、すべての行の情報がすべて同じ行で、その前に同じid行、そして計算?私は、次の解決策を考え出した

id event_id event_date days_last_event avg_money_spent total_money_spent 
1  100  2016-10-01 278    500     1500 
2  100  2016-09-30 361    196.67    590  
1  101  2015-12-28 622    675     1350 
2  102  2015-10-25 558    290     580  
3  102  2015-10-25 0     500     500 
1  103  2014-04-15 0     1000     1000 
2  103  2014-04-15 0     180     180 
+2

どのように 'avg_money_spent'と' total_money_spent'が計算されますか? 1件の例を挙げてください。 –

+0

私はそれを持っていません –

+0

@NickilMaveliは、そのIDからその日付の前に費やされたすべてのお金の圧延和と平均になると思います。 – sfactor

答えて

0

のように対応する計算機能を備えた新しいデータフレームを返すようにしたい:

df1= df.sort_values(by="event_date",ascending = False) 
g = df1.groupby(by=["id"]) 
df1["total_money_spent","count"]= g.agg({"money_spent":["cumsum","cumcount"]}) 
df1["avg_money_spent"]=df1["total_money_spent"]/(df1["count"]+1) 
関連する問題