Articles of por

Aplicación de diferentes funciones agregadas a diferentes columnas (ahora que el dict con cambio de nombre está en desuso)

Ya había hecho esta pregunta antes: Python Pandas: aplicando diferentes funciones agregadas a diferentes columnas, pero los últimos cambios en Pandas https://github.com/pandas-dev/pandas/pull/15931 significan que lo que pensé era un estilo elegante y python. La solución está en desuso, por razones que realmente no entiendo. La pregunta era, y sigue siendo: al hacer un groupby, ¿cómo […]

Pandas `DataFrameGroupBy` y` SeriesGroupBy`

Admito que no soy un gurú de Python, pero aún así, tratar con Pandas DataFrameGroupBy y SeriesGroupBy excepcionalmente contraintuitivo. (Tengo un fondo R). Tengo el dataframe a continuación: import pandas as pd import numpy as np df = pd.DataFrame({‘id’ : range(1,9), ‘code’ : [‘one’, ‘one’, ‘two’, ‘three’, ‘two’, ‘three’, ‘one’, ‘two’], ‘colour’: [‘black’, ‘white’,’white’,’white’, ‘black’, […]

Inserte filas como resultado de una operación grupal en el dataframe original

Por ejemplo, tengo un dataframe de pandas de la siguiente manera: col_1 col_2 col_3 col_4 a X 5 1 a Y 3 2 a Z 6 4 b X 7 8 b Y 4 3 b Z 6 5 Y quiero, para cada valor en col_1, agregar los valores en col_3 y col_4 (y muchas […]

Pandas temporales de sum acumulada por grupo.

Tengo un dataframe donde se registran 1 o más eventos para cada ID. Para cada evento se registran el id, una métrica x y una fecha. Algo como esto: import pandas as pd import datetime as dt import numpy as np x = range(0, 6) id = [‘a’, ‘a’, ‘b’, ‘a’, ‘b’, ‘b’] dates = […]

Aplicación de la función de media acumulativa a un objeto agrupado

Tengo un df DataFrame donde cada registro representa un juego de fútbol. Los equipos aparecerán más de una vez. Necesito calcular algún tipo de media móvil para las puntuaciones de cada equipo (bueno, no es exactamente la media móvil de la letra). date home away score_h score_a 166 2013-09-01 Fulham Chelsea 0 0 167 2013-09-03 […]

Python Pandas: Pasando argumentos a una función en agg ()

Estoy tratando de reducir los datos en un dataframe de pandas utilizando diferentes tipos de funciones y valores de argumento. Sin embargo, no logré cambiar los argumentos predeterminados en las funciones de agregación. Aquí hay un ejemplo: >>> df = pd.DataFrame({‘x’: [1,np.nan,2,1], … ‘y’: [‘a’,’a’,’b’,’b’]}) >>> df xy 0 1.0 a 1 NaN a 2 […]

Python Pandas: Asignar el último valor del grupo DataFrame a todas las entradas de ese grupo

En Python Pandas, tengo un DataFrame. Agrupo este DataFrame por una columna y quiero asignar el último valor de una columna a todas las filas de otra columna. Sé que puedo seleccionar la última fila del grupo con este comando: import pandas as pd df = pd.DataFrame({‘a’: (1,1,2,3,3), ‘b’:(20,21,30,40,41)}) print(df) print(“-“) result = df.groupby(‘a’).nth(-1) print(result) […]

pandas obtener promedio de un groupby

Estoy tratando de encontrar el costo mensual promedio por usuario_id, pero solo puedo obtener el costo promedio por usuario o el costo mensual por usuario. Debido a que agrupo por usuario y mes, no hay manera de obtener el promedio del segundo grupo por (mes) a menos que transforme la salida de groupby a otra […]

pandas, aplique múltiples funciones de múltiples columnas al objeto groupby

Quiero aplicar varias funciones de varias columnas a un objeto groupby que da como resultado un nuevo pandas.DataFrame . Sé cómo hacerlo en pasos separados: by_user = lasts.groupby(‘user’) elapsed_days = by_user.apply(lambda x: (x.elapsed_time * x.num_cores).sum() / 86400) running_days = by_user.apply(lambda x: (x.running_time * x.num_cores).sum() / 86400) user_df = elapsed_days.to_frame(‘elapsed_days’).join(running_days.to_frame(‘running_days’)) Lo que resulta en user_df siendo: […]

Python pandas error al hacer groupby cuentas

Al hacer cuentas de groupby sobre varias columnas, aparece un error. Aquí está mi dataframe y también un ejemplo que simplemente etiqueta los distintos grupos “b” y “c”. df = pd.DataFrame(np.random.randint(0,2,(4,4)), columns=[‘a’, ‘b’, ‘c’, ‘d’]) df[‘gr’] = df.groupby([‘b’, ‘c’]).grouper.group_info[0] print df abcd gr 0 0 1 0 0 1 1 1 1 1 0 2 […]