2017-10-27 11 views
0

私は現在、いくつかのCSVデータを集約するためにパンダでgroupby関数を使用しようとしています。パンダ集約グループ

これは私がCSVで、現在持っているデータの小さなサンプルです:

Company,School,Number,Type 
Adtelem Global Education Inc.,Carrington,3,For-Profit 
Adtelem Global Education Inc.,Carrington,4,For-Profit 
Adtelem Global Education Inc.,Carrington,1,For-Profit 
Adtelem Global Education Inc.,Carrington,4,For-Profit 
Adtelem Global Education Inc.,Carrington,3,For-Profit 
Adtelem Global Education Inc.,Carrington,3,For-Profit 
Adtelem Global Education Inc.,DeVry Institute of Technology,4,For-Profit 
Adtelem Global Education Inc.,DeVry Institute of Technology,4,For-Profit 
Adtelem Global Education Inc.,DeVry Institute of Learning,16, For-Profit 
Adtelem Global Education Inc.,DeVry Institute of Learning,9,  
Career Education Corporation,Le Cordon Blue College of Culinary Arts,6,For-Profit 
Career Education Corporation,Le Cordon Blue College of Culinary Arts,23,For-Profit 

それが現在立っているように、同じ「学校」欄(キャリントン、デブライなどの繰り返し回数があります)、私はそれらを凝縮したい。具体的には、その学校のすべてのインスタンスの番号を合計し、その学校を所有する会社の名前(第1列)と学校のタイプ(最後の列カラム)。

最終生成物は、次のようになります。私はこれを行うとき、私も会社を失い、各学校に添付入力し、しかし

data2 = data.groupby("School").sum() 

Company,School,Number,Type 
Adtelem Global Education Inc.,Carrington,18,For-Profit, 
Adtelem Global Education Inc., DeVry Institute of Technology,8,For-Profit 
Adtelem Global Education Inc.,DeVry Institute of Learning,25,For-Profit 
Career Education Corporation,Le Cordon Blue College of Culinary Arts,29,For-Profit 

私は、次のコードを使用しています。私は解決策が基本的だと知っていますが、私はパンダスには新しいので、皆さんがお手伝いできれば幸いです。

+0

あなたの質問が解決された場合は、[回答を受け入れてください](https://stackoverflow.com/help/someone-answers)してください。ありがとう。 –

答えて

1

によってグループに列のリストを提供することができます。

df.groupby('School', as_index=False)\ 
    .agg({'Company' : 'first', 'Type' : 'first', 'Number' : 'sum'}) 

            School      Company \ 
0        Carrington Adtelem Global Education Inc. 
1    DeVry Institute of Learning Adtelem Global Education Inc. 
2   DeVry Institute of Technology Adtelem Global Education Inc. 
3 Le Cordon Blue College of Culinary Arts Career Education Corporation 

    Number  Type 
0  18 For-Profit 
1  25 For-Profit 
2  8 For-Profit 
3  29 For-Profit 

私はそれが明示的にすべての列を集約する方が良いでしょうと信じています。

0

私はgroupby + aggでこれを行うだろう

data2 = data.groupby(["School", "Company", "Type"]).sum() 
関連する問題