2016-10-07 2 views
1

많은 기능을 계산해야하는 데이터 프레임이 있습니다. dataframe 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'이 계산된다? 한 가지 사례에 대한 예를 제공해 줄 수 있습니까? –

+0

전혀 모르겠다. –

+0

@NickilMaveli는이 ID에서 그 날짜 이전에 소비 된 모든 돈의 평균과 평균이 될 것이라고 추측합니다. – sfactor

답변

0

처럼 해당 계산 기능을 갖춘 새로운 dataframe을 반환하려면 :

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) 
관련 문제