2017-12-27 14 views
2
내가이 테이블

팬더 - 각 그룹

입력 각 CUSTOMER_ID에 대한 최대 날짜로부터 최소 날짜 뺄셈의 결과 컬럼 추가 할

에 대한 최대 일로부터 최소 날짜를 빼기 :

action_date customer_id 
2017-08-15  1 
2017-08-21  1 
2017-08-21  1 
2017-09-02  1 
2017-08-28  2 
2017-09-29  2 
2017-10-15  3 
2017-10-30  3 
2017-12-05  3 

그리고이 표를 얻을

출력 :

action_date customer_id diff 
2017-08-15  1   18 
2017-08-21  1   18 
2017-08-21  1   18 
2017-09-02  1   18 
2017-08-28  2   32 
2017-09-29  2   32 
2017-10-15  3   51 
2017-10-30  3   51 
2017-12-05  3   51 

나는이 코드를 시도하지만 NaN이의

group = df.groupby(by='customer_id') 
df['diff'] = (group['action_date'].max() - group['action_date'].min()).dt.days 

답변

2

많은 당신이 transform 방법을 사용할 수 있습니다 박았 :

In [23]: df['diff'] = df.groupby('customer_id') \ 
         ['action_date'] \ 
         .transform(lambda x: (x.max()-x.min()).days) 

In [24]: df 
Out[24]: 
    action_date customer_id diff 
0 2017-08-15   1 18 
1 2017-08-21   1 18 
2 2017-08-21   1 18 
3 2017-09-02   1 18 
4 2017-08-28   2 32 
5 2017-09-29   2 32 
6 2017-10-15   3 51 
7 2017-10-30   3 51 
8 2017-12-05   3 51 
+0

감사합니다! 당신은 awesome입니다 :) – Superbman

+0

@Superbman, 다행 내가 도울 수 :) – MaxU