Joop
Estoy leyendo el contenido de una hoja de cálculo en pandas. DataNitro tiene un método que devuelve una selección rectangular de celdas como una lista de listas. Entonces
table = Cell("A1").table
da
table = [['Heading1', 'Heading2'], [1 , 2], [3, 4]]
headers = table.pop(0) # gives the headers as list and leaves data
Estoy ocupado escribiendo código para traducir esto, pero creo que es un uso tan simple que debe haber un método para hacerlo. Parece que no puedo encontrarlo en la documentación. ¿Algún consejo sobre el método que simplificaría esto?
EdChum
Llama a pd.DataFrame
constructor directamente:
df = pd.DataFrame(table, columns=headers)
df
Heading1 Heading2
0 1 2
1 3 4
-
2 por 2 es un ejemplo desafortunado. Esperaba que las listas individuales se convirtieran en columnas, pero pandas atraviesa listas y crea columnas
– usuario1700890
6 abr a las 17:27
Shoresh
Con el enfoque explicado anteriormente por EdChum, los valores de la lista se muestran como filas. Para mostrar los valores de las listas como columnas en DataFrame, simplemente use transpose() de la siguiente manera:
table = [[1 , 2], [3, 4]]
df = pd.DataFrame(table)
df = df.transpose()
df.columns = ['Heading1', 'Heading2']
La salida entonces es:
Heading1 Heading2
0 1 3
1 2 4
-
¿Estás seguro de
df = df.transpose()
? Tengo una lista de listas (la lista interna tiene 11 elementos) y las necesito en un marco de datos de pandas de la misma manera, pero para obtener el resultado que está mostrando, omito eltranspose
.– Sinux1
12 oct 2022 a las 18:28
beny
Incluso sin pop
la lista que podemos hacer con set_index
pd.DataFrame(table).T.set_index(0).T
Out[11]:
0 Heading1 Heading2
1 1 2
2 3 4
Actualizar from_records
table = [['Heading1', 'Heading2'], [1 , 2], [3, 4]]
pd.DataFrame.from_records(table[1:],columns=table[0])
Out[58]:
Heading1 Heading2
0 1 2
1 3 4
Desde el table
ejemplo llamar DataFrame
constructor de la siguiente manera:
table = [['Heading1', 'Heading2'], [1 , 2], [3, 4]]
df = pd.DataFrame(table[1:], columns=table[0])