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.