Tengo un dataframe como
month dest 1 a 1 bb 2 cc 2 dd 3 ee 4 bb
Necesito crear un conjunto para 4 otro dataframe. Estoy dando vueltas y espero asignar el nombre de dataframe dynamicall inside loop, como
i=1 while i<=4: dataframe+str(i)=org_dataframe.loc[org_dataframe['month'] == i] i=i+1
Me da,
SyntaxError: no se puede asignar al operador
¿Cómo creo una variable de cadena dinámica / nombre de dataframe.
Creo que lo mejor es crear un dict
de objetos; consulte ¿Cómo creo un número variable de variables?
Puede usar dict
de DataFrames
convirtiendo groupby
objeto a dict
:
d = dict(tuple(df.groupby('month'))) print (d) {1: month dest 0 1 a 1 1 bb, 2: month dest 2 2 cc 3 2 dd, 3: month dest 4 3 ee, 4: month dest 5 4 bb} print (d[1]) month dest 0 1 a 1 1 bb
Otra solución:
for i, x in df.groupby('month'): globals()['dataframe' + str(i)] = x print (dataframe1) month dest 0 1 a 1 1 bb
Puede utilizar una lista de marcos de datos:
dataframe = [] dataframe.append(None) group = org_dataframe.groupby('month') for n,g in group: dataframe.append(g) dataframe[1]
Salida:
month dest 0 1 a 1 1 bb dataframe[2]
Salida:
month dest 2 2 cc 3 2 dd