Convierta una lista de listas en un marco de datos de pandas

31

Estoy tratando de convertir una lista de listas que se parece a la siguiente en un marco de datos de Pandas

[['New York Yankees ', '"Acevedo Juan"  ', 900000, ' Pitcher\n'], 
['New York Yankees ', '"Anderson Jason"', 300000, ' Pitcher\n'], 
['New York Yankees ', '"Clemens Roger" ', 10100000, ' Pitcher\n'], 
['New York Yankees ', '"Contreras Jose"', 5500000, ' Pitcher\n']]

Básicamente, estoy tratando de convertir cada elemento de la matriz en un marco de datos de pandas que tiene cuatro columnas. ¿Cuál sería el mejor enfoque para esto como pd? Dataframe no me da lo que estoy buscando.

Aravind Veluchamy
fuente
vea esta pregunta en el desbordamiento de pila: stackoverflow.com/questions/.../…
keramat el

Respuestas:

37
import pandas as pd

data = [['New York Yankees', 'Acevedo Juan', 900000, 'Pitcher'], 
        ['New York Yankees', 'Anderson Jason', 300000, 'Pitcher'], 
        ['New York Yankees', 'Clemens Roger', 10100000, 'Pitcher'], 
        ['New York Yankees', 'Contreras Jose', 5500000, 'Pitcher']]

df = pd.DataFrame.from_records(data)
Emre
fuente
44
Puede refinarlo un poco más con: DataFrame.from_records (data, columnas = ['Equipo', 'Jugador', 'lo que sea que sea', 'posición'])
Juan Ignacio Gil
1
¿Hay alguna manera de especificar las importaciones más específicamente? Por ejemplo, quiero especificar que DataFrame["Team"]debe referirse al primer elemento de cada sublista (es decir data[i][0]) y DataFrame["Position"]hacer referencia al último elemento de cada sublista (es decir data[i][-1]).
Ivo
@Ivo: utilice el columnsparámetro de DataFrame.from_records .
Emre
15

Una vez que tenga los datos:

import pandas as pd

data = [['New York Yankees ', '"Acevedo Juan"  ', 900000, ' Pitcher\n'], 
        ['New York Yankees ', '"Anderson Jason"', 300000, ' Pitcher\n'], 
        ['New York Yankees ', '"Clemens Roger" ', 10100000, ' Pitcher\n'], 
        ['New York Yankees ', '"Contreras Jose"', 5500000, ' Pitcher\n']]

Puede crear un marco de datos a partir de la transposición de los datos:

data_transposed = zip(data)
df = pd.DataFrame(data_transposed, columns=["Team", "Player", "Salary", "Role"])

De otra manera:

df = pd.DataFrame(data)
df = df.transpose()
df.columns = ["Team", "Player", "Salary", "Role"]
Paloma Manzano
fuente
5

Puede definirlo directamente como un marco de datos de la siguiente manera:

import pandas as pd

data = [['New York Yankees', 'Acevedo Juan', 900000, 'Pitcher'], 
        ['New York Yankees', 'Anderson Jason', 300000, 'Pitcher'], 
        ['New York Yankees', 'Clemens Roger', 10100000, 'Pitcher'], 
        ['New York Yankees', 'Contreras Jose', 5500000, 'Pitcher']]

data = pd.DataFrame(data)
LUSAQX
fuente
1
import pandas as pd

data = [['New York Yankees', 'Acevedo Juan', 900000, 'Pitcher'],
        ['New York Yankees', 'Anderson Jason', 300000, 'Pitcher'], 
        ['New York Yankees', 'Clemens Roger', 10100000, 'Pitcher'], 
        ['New York Yankees', 'Contreras Jose', 5500000, 'Pitcher']]

df = pd.DataFrame(data)
tharun___ entusiasta de los datos
fuente
0

Este fue, con mucho, el más simple:

import pandas as pd

data = [['New York Yankees', 'Acevedo Juan', 900000, 'Pitcher'], 
        ['New York Yankees', 'Anderson Jason', 300000, 'Pitcher'], 
        ['New York Yankees', 'Clemens Roger', 10100000, 'Pitcher'], 
        ['New York Yankees', 'Contreras Jose', 5500000, 'Pitcher']]

data = pd.DataFrame(data)

ahora, si las claves son la primera lista en la lista de listas (datos [0]), puede asignarlas a los encabezados de columna en el marco de datos de la siguiente manera:

import pandas as pd

data = [['key1', 'key2', key3, 'key4'], 
    ['New York Yankees', 'Anderson Jason', 300000, 'Pitcher'], 
    ['New York Yankees', 'Clemens Roger', 10100000, 'Pitcher'], 
    ['New York Yankees', 'Contreras Jose', 5500000, 'Pitcher']]

data = pd.DataFrame(data[1:], columns=data[0])
GManAsg
fuente