usar tablas sumar suma recorrer para panda leer funciones documentacion datos data como comandos columnas python pandas dataframe group-by aggregate

tablas - suma de columnas en python



Pandas group-by y sum (6)

Las otras dos respuestas logran lo que quieres.

Puede usar la funcionalidad de pivot para organizar los datos en una buena tabla

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

Estoy usando este marco de datos:

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

Quiero agregar esto por nombre y luego por fruta para obtener un número total de frutas por nombre.

Bob,Apples,16 ( for example )

Intenté agrupar por nombre y fruta, pero ¿cómo obtengo la cantidad total de fruta?


Puede configurar la columna groupby para index luego usar sum con 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


Si desea mantener las columnas originales Fruit and Name , use reset_index() . De lo contrario, Fruit and Name pasará a formar parte del índice.

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

Como se ve en las otras respuestas:

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


También puedes usar la función agg,

df.groupby([''Name'', ''Fruit''])[''Number''].agg(''sum'')


usa el método 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


df.groupby([''Fruit'',''Name''])[''Number''].sum()

Puede seleccionar diferentes columnas para sumar números.