2016-07-21 10 views
-2

와 나는 2 열로 그룹화 된 데이터 프레임이 - 날짜와 클라이언트와 나는 그렇게 금액 합계 : 이제 new_df = df.groupby(['Date',Client'])계산 팬더

을 나는 다음과 같은 DF 수 :

   Sum 
Date Client 
1/1 A  0.8 
     B  0.2 
1/2 A  0.1 
     B  0.9 

0.1에서 0.9로 변경된 0.8에서 0.2 사이의 변동폭이 크다는 사실을 알고 싶습니다. 가장 효율적인 방법은 무엇입니까? 또한 시도 할 때 날짜 및 클라이언트 필드에 액세스 할 수 없습니다.

new_df[['Date','Client']] 

왜 그런가요?

답변

1

당신이 pct_change 또는 diff 사용할 수 있습니다 IIUC :

new_df = df.groupby(['Date','Client'], as_index=False).sum() 
print (new_df) 
    Date Client Sum 
0 1/1  A 0.8 
1 1/1  B 0.2 
2 1/2  A 0.1 
3 1/2  B 0.9 

new_df['pct_change'] = new_df.groupby('Date')['Sum'].pct_change() 
new_df['diff'] = new_df.groupby('Date')['Sum'].diff() 
print (new_df) 
    Date Client Sum pct_change diff 
0 1/1  A 0.8   NaN NaN 
1 1/1  B 0.2  -0.75 -0.6 
2 1/2  A 0.1   NaN NaN 
3 1/2  B 0.9  8.00 0.8 
+0

감사합니다,이 일 방향하지만 난 단지 B에서 만 differnece 대 A의 차이를 알고 싶어요 ...? – Umen

+0

올바르게 이해하면 groupby 컬럼을'Date'에서'Client'로 변경하십시오. - new_df [ 'pct_change'] = new_df.groupby ('Client') [ 'Sum'] .pct_change()' – jezrael