Dividir el marco de datos de pandas según los valores de una columna usando groupby
Quiero dividir el siguiente marco de datos según la columna ZZ
df =
N0_YLDF ZZ MAT
0 6.286333 2 11.669069
1 6.317000 6 11.669069
2 6.324889 6 11.516454
3 6.320667 5 11.516454
4 6.325556 5 11.516454
5 6.359000 6 11.516454
6 6.359000 6 11.516454
7 6.361111 7 11.516454
8 6.360778 7 11.516454
9 6.361111 6 11.516454
Como resultado, quiero una columna nueva DataFrame
con la N0_YLDF
columna dividida en 4, una columna nueva para cada valor único de ZZ
. ¿Cómo hago esto? Puedo hacer groupby, pero no sé qué hacer con el objeto agrupado.
Aceptado
gb = df.groupby('ZZ')
[gb.get_group(x) for x in gb.groups]
Existe otra alternativa, ya que groupby devuelve un generador; simplemente podemos usar una lista por comprensión para recuperar el segundo valor (el marco).
dfs = [x for _, x in df.groupby('ZZ')]
En R existe un método de marco de datos llamado división. Esto es para todos los usuarios de R:
def split(df, group):
gb = df.groupby(group)
return [gb.get_group(x) for x in gb.groups]