熊猫组和小熊猫之和

熊猫组和小熊猫之和

我正在使用这个数据框架:


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 )

我试着按名字和水果分组,但是我怎么得到水果的总数。


千巷猫影
浏览 437回答 4
4回答

凤凰求蛊

使用sum()方法df.groupby(['Fruit','Name']).sum()Out[31]:                NumberFruit   Name         Apples  Bob        16        Mike        9        Steve      10Grapes  Bob        35        Tom        87        Tony       15Oranges 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       NumberApples  Bob        16Apples  Mike        9Apples  Steve      10Grapes  Bob        35Grapes  Tom        87Grapes  Tony       15Oranges Bob        67Oranges Mike       57Oranges Tom        15Oranges Tony        1从其他答复中可以看出:df.groupby(['Fruit','Name'])['Number'].sum()               NumberFruit   Name         Apples  Bob        16        Mike        9        Steve      10Grapes  Bob        35        Tom        87        Tony       15Oranges Bob        67        Mike       57        Tom        15        Tony        1

慕后森

其他两种答案都能实现你想要的结果。您可以使用pivot在一个漂亮的表中安排数据的功能df.groupby(['Fruit','Name'],as_index = False).sum().pivot('Fruit','Name').fillna(0)Name    Bob     Mike    Steve   Tom    TonyFruit                   Apples  16.0    9.0     10.0    0.0     0.0Grapes  35.0    0.0     0.0     87.0    15.0Oranges 67.0    57.0    0.0     15.0    1.0
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python