2017-10-28 5 views
1

私は、国、地域、所得を持つデータフレームincomeDataを持っています。私は平均、最小、最大とカウントを返すために集計を使用しようとしています。私は収入が100Pythonデータフレーム条件付き合計

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でカスタム関数を使用することができ、True sがCountryのためにも、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