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.


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)

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"]

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)

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)

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])
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.