Digamos que tengo cualquier lista anidada, por ejemplo
A = [[120, 'Date1', 1.03], [120, 'Date2', 1.04], [120, 'Date3', 1.02], [240, 'Date1', 1.06], [240,'Date2', 0.98],
[240, 'Date3', 1.04], [381, 'Date2', 1.03], [381, 'Date3', 0.85]]
El primer elemento de cada sublista es el número de inventario, el segundo la fecha y el tercero un valor correspondiente. Quiero crear un marco de datos donde los encabezados de columna sean el número de stock, los encabezados de fila sean la fecha y los elementos sean los valores correspondientes (tercer elemento). No estoy directamente seguro de cómo haría esto. Quiero formar algo como esto:
120 240 381
Date1 1.03 1.06 NaN
Date2 1.04 0.98 1.03
Date3 1.02 1.04 0.85
Pero quiero formar esto para la lista anidada de tamaño any , por lo que no puedo escribir cada variable para el marco de datos. Cualquier ayuda sería muy apreciada.
Gracias.
2 respuestas
Cree DataFrame
por constructor y luego DataFrame.pivot
con DataFrame.rename_axis
:
df = pd.DataFrame(A).pivot(1,0,2).rename_axis(index=None, columns=None)
print (df)
120 240 381
Date1 1.03 1.06 NaN
Date2 1.04 0.98 1.03
Date3 1.02 1.04 0.85
Primero puede convertir su lista a un dict y luego construir un DataFrame directamente.
d = {}
[d.setdefault(e[0],{}).update({e[1]:e[2]}) for e in A]
df = pd.DataFrame(d)
120 240 381
Date1 1.03 1.06 NaN
Date2 1.04 0.98 1.03
Date3 1.02 1.04 0.85
Preguntas relacionadas
Nuevas preguntas
python
Python es un lenguaje de programación multipropósito, de tipificación dinámica y de múltiples paradigmas. Está diseñado para ser rápido de aprender, comprender y usar, y hacer cumplir una sintaxis limpia y uniforme. Tenga en cuenta que Python 2 está oficialmente fuera de soporte a partir del 01-01-2020. Aún así, para preguntas de Python específicas de la versión, agregue la etiqueta [python-2.7] o [python-3.x]. Cuando utilice una variante de Python (por ejemplo, Jython, PyPy) o una biblioteca (por ejemplo, Pandas y NumPy), inclúyala en las etiquetas.