2017-10-28 3 views
1

국가, 지역 및 소득이있는 데이터 프레임 소득 데이터가 있습니다. 평균, 최소, 최대 및 개수를 반환하는 집계를 사용하려고합니다. 소득이 100보다 큰파이썬 데이터 프레임 조건부 합계

raw_data = {'Country': ['A', 'B', 'C', 'D', 'E'], 
      'Region': ['X', 'X', 'X', 'Y', 'Y'], 
      'Income': [100, 200, 300, 100, 200] 
      } 
incomeData = pd.DataFrame(raw_data, columns = ['Country', 'Region', 'Income']) 
regionGroup = incomeData.groupby(['Region'], as_index=False) 
groupCount = lambda x: x.count() 
#CountHighIncome = ? 
aggregations = { 
    'Country': {groupCount 
    }, 
    'Income': {'min', 'max', 'mean', 'median' #, CountHighIncome 
    } 
} 
incomeSummary = regionGroup.agg(aggregations) 
incomeSummary 
 Region Country Income
lambda> median max mean min CountHighIncome
0 X 3 200 300 200 100 2
1 Y 2 150 200 150 100 1

람다 접근 방식은 지역 내 국가를 계산하도록 확장 할 수있는 지역 내 국가를 계산 있으면 알려 주시기 바랍니다 어디는 국가를 카운트 할 수 있도록하려면 소득이 100보다 큰 경우 또는이 문제에 대한 대안으로 더 나은 접근법이있는 경우.

Many Thanks in Advance.

답변

1

당신은 합계 조건 lambda와 사용자 정의 기능을 사용할 수 있습니다 TrueCountry을 위해 또한, 1과 같이 계산된다은 lambda 기능을 제거 만 count을 사용됩니다

CountHighIncome = lambda x: (x > 100).sum() 
aggregations = { 
    'Country': {'count' 
    }, 
    'Income': {'min', 'max', 'mean', 'median', CountHighIncome 
    } 
} 
incomeSummary = regionGroup.agg(aggregations) 
print (incomeSummary) 
    Region Income       Country 
      max min <lambda> mean median count 
0  X 300 100  2 200 200  3 
1  Y 200 100  1 150 150  2 
+0

감사합니다, 당신의 응답이 잘 감사합니다. 이것은 대우를 작동합니다. – user1254513

+0

당신은 오신 것을 환영합니다! 좋은 날! – jezrael