2017-09-14 2 views
1

나는팬더 dataframe에서 그룹당 값의 평균을 찾기

df = pd.DataFrame(
      {'indicator': ['indicator 1', 'indicator 1', 'indicator 2', 'indicator 2'], 
      'year':[2014,2014,2015,2015], 
      'value type': ['upper', 'lower', 'upper', 'lower'], 
      'value':[12.3, 10.2, 15.4, 13.2] 
      }, 
      index=[1,2,3,4]) 

을 다음과 같이 내가 평균과 그 상부 및 하부 값을 제거하고 교체 할 각 지표의 상위 및 하위 값을 제공하는 dataframe이 두 값 중 하나.

어떻게하면됩니까?

답변

2

groupbytransformmean 일 수 있습니다. 당신이 표시 당 하나 개의 행을 원하는 경우

df['value'] = df.groupby('indicator')['value'].transform('mean') 

df 
    indicator value value type year 
1 indicator 1 11.25  upper 2014 
2 indicator 1 11.25  lower 2014 
3 indicator 2 14.30  upper 2015 
4 indicator 2 14.30  lower 2015 

또는, agg를 사용합니다. 대신 컬럼으로 인덱스를 원하는 경우

df = df.groupby('indicator').agg('mean') 
df 
      value year 
indicator    
indicator 1 11.25 2014 
indicator 2 14.30 2015 

, reset_index 전화 :

df = df.reset_index() 
df 
    indicator value year 
0 indicator 1 11.25 2014 
1 indicator 2 14.30 2015 
관련 문제