tablas - Pandas: ¿es posible agregar dos columnas usando dos agregaciones diferentes?
pandas python (1)
El método agg
puede aceptar un dict, en cuyo caso las teclas indican la columna a la que se aplica la función:
grouped.agg({''numberA'':''sum'', ''numberB'':''min''})
Por ejemplo,
import numpy as np
import pandas as pd
df = pd.DataFrame({''A'': [''foo'', ''bar'', ''foo'', ''bar'',
''foo'', ''bar'', ''foo'', ''foo''],
''B'': [''one'', ''one'', ''two'', ''three'',
''two'', ''two'', ''one'', ''three''],
''number A'': np.arange(8),
''number B'': np.arange(8) * 2})
grouped = df.groupby(''A'')
print(grouped.agg({
''number A'': ''sum'',
''number B'': ''min''}))
rendimientos
number B number A
A
bar 2 9
foo 0 19
Esto también muestra que Pandas puede manejar espacios en nombres de columnas. No estoy seguro de cuál fue el origen del problema, pero los espacios literales no deberían haber planteado un problema. Si desea investigar más a fondo,
print(df.columns)
Sin reasignar los nombres de las columnas , se mostrará la repr
de los nombres. Tal vez había un carácter difícil de ver en el nombre de la columna que parecía un espacio (o algún otro carácter) pero en realidad era un u''/xa0''
(NO-BREAK SPACE), por ejemplo.
Estoy cargando un archivo csv, que tiene las siguientes columnas: fecha, texto A, texto B, número A, número B
Quiero agrupar por las columnas: fecha, texto A y texto B, pero quiero aplicar "suma" al número A, pero "min" al número B.
data = pd.read_table("file.csv", sep=",", thousands='','')
grouped = data.groupby(["date", "textA", "textB"], as_index=False)
... ¿pero no puedo ver cómo aplicar dos funciones agregadas diferentes a dos columnas diferentes? Es decir, sum(numberA), min(numberB)