2017-10-27 1 views
0

내가 파이썬 새롭다 작은 선회 함수의 도움을 필요로 값 I 위를 선회 한 제가파이썬 피봇

order_id primary_dish primary_cat dish_id order_date average_adoption 
927852  54438    1   54465 2016-12-11 37.5 
927852  54438    1   54443 2016-12-11 37.5 
927852  54453    1   54453 2016-12-11 25.61 

사용 팬더 위 형식 본 데이터 테이블이

테이블 dish_id를 사용하지만 난

는 현재 아래와 같은 출력을 얻기 할 수 아니다 average_adotion의 열이 NAN으로 lised지고 값을 대체 할

0 12,397,976,

피벗 기능

dish.pivot_table(index=['order_id', 'primary_dish', 'primary_cat'], 
       columns='dish_id',values=['average_adoption'], aggfunc='size' 
       ).reset_index() 

출력

order_id primary_dish primary_cat 54438 54443 54453 54465 
    927852  54438   1  37.5 1.0  1.0 1.0 
    927852  54443   1  1.0 25.61 1.0 1.0 
    927852  54453   1  1.0 1.0  25.61 1.0 

답변

0

먼저 피벗처럼 나중에 정렬 reset_index 해달라고해야

df = dish.pivot_table(index=['order_id', 'primary_dish', 'primary_cat'], 
           columns='dish_id',values=['average_adoption'], aggfunc='size') 

pivot_table 같은 인덱스와 같은 mean으로 시리즈를 만들기 :

s = dish.groupby(['order_id','primary_dish','primary_cat'])['average_adoption'].mean() 
isnullmask에 의해 NaN의 교체 :

print (df.mask(df.isnull(), s, axis=0).reset_index()) 
dish_id order_id primary_dish primary_cat 54443 54453 54465 
0   927852   54438   1 1.00 37.5 1.00 
1   927852   54453   1 25.61 1.0 25.61 

또한 (하지만 나를 위해하지 0.20.3 팬더에서) 작업을해야합니다

print (df.fillna(s)) 
+0

덕분에 내가 을 받고 계속 @jezrael "ValueError : 지정된 수준이없고 겹치는 이름이 없으면 참가할 수 없습니다." meth를 사용하는 동안 오류가 발생했습니다. 위의 ord –

+0

데이터에 약간의 문제가있을 수 있으며 데이터와 코드를 공유 할 수 있습니까? – jezrael