Objetivo
Tengo una trama de datos pandas, como se muestra a continuación, con varias columnas y le gustaría obtener el total de la columna, MyColumn
.
Marco de datos -df
:
print df
X MyColumn Y Z
0 A 84 13.0 69.0
1 B 76 77.0 127.0
2 C 28 69.0 16.0
3 D 28 28.0 31.0
4 E 19 20.0 85.0
5 F 84 193.0 70.0
Mi intento :
Intenté obtener la suma de la columna usando groupby
y .sum()
:
Total = df.groupby['MyColumn'].sum()
print Total
Esto provoca el siguiente error:
TypeError: 'instancemethod' object has no attribute '__getitem__'
Rendimiento esperado
Hubiera esperado que la salida fuera la siguiente:
319
O, alternativamente, me gustaría df
ser editado con un nuevo row
título que TOTAL
contenga el total:
X MyColumn Y Z
0 A 84 13.0 69.0
1 B 76 77.0 127.0
2 C 28 69.0 16.0
3 D 28 28.0 31.0
4 E 19 20.0 85.0
5 F 84 193.0 70.0
TOTAL 319
Respuestas:
Deberías usar
sum
:Luego usa
loc
conSeries
, en ese caso, el índice debe establecerse como el mismo que la columna específica que necesita sumar:porque si pasa escalar, se llenarán los valores de todas las filas:
Hay otras dos soluciones con
at
yix
vea las aplicaciones a continuación:Nota: Desde Pandas v0.20,
ix
ha quedado obsoleto. Utiliceloc
o en suiloc
lugar.fuente
.loc
hace en el ejemplo anterior?loc
es para configurar con ampliación .at
también funciona para la configuración con ampliación, consulte la última edición.The .loc/.ix/[] operations can perform enlargement when setting a non-existant key for that axis.
, por lo queloc
oix
o[]
. en la siguiente sección se escribe.at may enlarge the object in-place as above if the indexer is missing.
Todos los métodos son buenos, peroat
creo que es el más rápido.Otra opción con la que puedes ir aquí:
También puede utilizar el
append()
método:Actualizar:
En caso de que necesite agregar la suma para todas las columnas numéricas , puede realizar una de las siguientes acciones:
Úselo
append
para hacer esto de una manera funcional (no cambia el marco de datos original):Úselo
loc
para mutar el marco de datos en su lugar:fuente
Similar a obtener la longitud de un marco de datos
len(df)
, lo siguiente funcionó para pandas y blaze:o alternativamente
fuente
Si hay algún problema en esto, corríjame.
fuente
Como otra opción, puede hacer algo como a continuación
Debajo de la secuencia de comandos, puede usar para los datos anteriores
fuente