私はこのデータフレームを使っています:
Fruit Date Name Number
Apples 10/6/2016 Bob 7
Apples 10/6/2016 Bob 8
Apples 10/6/2016 Mike 9
Apples 10/7/2016 Steve 10
Apples 10/7/2016 Bob 1
Oranges 10/7/2016 Bob 2
Oranges 10/6/2016 Tom 15
Oranges 10/6/2016 Mike 57
Oranges 10/6/2016 Bob 65
Oranges 10/7/2016 Tony 1
Grapes 10/7/2016 Bob 1
Grapes 10/7/2016 Tom 87
Grapes 10/7/2016 Bob 22
Grapes 10/7/2016 Bob 12
Grapes 10/7/2016 Tony 15
これを名前で、次に果物で集計して、名前ごとの果物の総数を求めます。
Bob,Apples,16 ( for example )
名前とフルーツでグループ化しようとしましたが、どうすればフルーツの総数を取得できますか。
sum()
メソッドを使う
df.groupby(['Fruit','Name']).sum()
Out[31]:
Number
Fruit Name
Apples Bob 16
Mike 9
Steve 10
Grapes Bob 35
Tom 87
Tony 15
Oranges Bob 67
Mike 57
Tom 15
Tony 1
Agg関数も使えます
df.groupby(['Name', 'Fruit'])['Number'].agg('sum')
元の列Fruit
とName
を保持したい場合は、reset_index()
を使用してください。そうでなければFruit
とName
はインデックスの一部になります。
df.groupby(['Fruit','Name'])['Number'].sum().reset_index()
Fruit Name Number
Apples Bob 16
Apples Mike 9
Apples Steve 10
Grapes Bob 35
Grapes Tom 87
Grapes Tony 15
Oranges Bob 67
Oranges Mike 57
Oranges Tom 15
Oranges Tony 1
他の答えに見られるように:
df.groupby(['Fruit','Name'])['Number'].sum()
Number
Fruit Name
Apples Bob 16
Mike 9
Steve 10
Grapes Bob 35
Tom 87
Tony 15
Oranges Bob 67
Mike 57
Tom 15
Tony 1
他の両方の答えはあなたが望むものを達成します。
pivot
機能を使って、Niceテーブルのデータを整理することができます。
df.groupby(['Fruit','Name'],as_index = False).sum().pivot('Fruit','Name').fillna(0)
Name Bob Mike Steve Tom Tony
Fruit
Apples 16.0 9.0 10.0 0.0 0.0
Grapes 35.0 0.0 0.0 87.0 15.0
Oranges 67.0 57.0 0.0 15.0 1.0
df.groupby(['Fruit','Name'])['Number'].sum()
あなたは数を合計するために異なる列を選択することができます。
groupby
とsum
を使うことができます。
df.groupby(['Name', 'Fruit']).sum()
Number
Name Fruit
Bob Apples 16
Grapes 35
Oranges 67
Mike Apples 9
Oranges 57
Steve Apples 10
Tom Grapes 87
Oranges 15
Tony Grapes 15
Oranges 1
groupby
列をindex
に設定してから、sum
とlevel
を使用することができます。
df.set_index(['Fruit','Name']).sum(level=[0,1])
Out[175]:
Number
Fruit Name
Apples Bob 16
Mike 9
Steve 10
Oranges Bob 67
Tom 15
Mike 57
Tony 1
Grapes Bob 35
Tom 87
Tony 15
この答えは、groupbyとsumがどのように機能するのかを理解するためだけのものです。
データセット「1900年から2015年までのインドの降雨量」を使用しています
My Datasetには、 "subdivision"や "Annual"などの列があります。
それで、ここで私はそれぞれの細区分のために年間降雨量の合計を計算したいです。
Total = Data.groupby('SUBDIVISION')['ANNUAL'].sum()
print (Total)
これは、区画がどのようにグループ化されるかであり、区画ごとの年間降水量の合計を取得します。