Converti un elenco di elenchi in un Dataframe Pandas


31

Sto cercando di convertire un elenco di elenchi simile al seguente in un frame di dati 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']]

In pratica sto cercando di convertire ogni elemento dell'array in un frame di dati Panda che ha quattro colonne. Quale sarebbe l'approccio migliore a questo come pd.Dataframe non mi dà proprio quello che sto cercando.


vedi questa domanda in overflow dello stack: stackoverflow.com/questions/.../...
Keramat

Risposte:


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)

4
Potresti perfezionarlo un po 'di più con: DataFrame.from_records (data, colonne = [' Squadra ',' Giocatore ',' qualunque sia-stat-is-that ',' position '])
Juan Ignacio Gil,

1
C'è un modo per specificare le importazioni in modo più specifico? Ad esempio, desidero specificare che DataFrame["Team"]deve fare riferimento al primo elemento di ciascun elenco secondario (ovvero data[i][0]) e DataFrame["Position"]fare riferimento all'ultimo elemento di ciascun elenco secondario (ovvero data[i][-1])?
Ivo

@Ivo: utilizzare il columnsparametro di DataFrame.from_records .
Emre,

15

Una volta che hai i dati:

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

È possibile creare un frame di dati dalla trasposizione dei dati:

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

Un altro modo:

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

5

Puoi semplicemente definirlo direttamente come un frame di dati come segue:

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

Questo è stato di gran lunga il più semplice:

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)

ora, se le chiavi sono il primo elenco nell'elenco di elenchi (dati [0]), è possibile assegnarli alle intestazioni di colonna nel frame di dati in questo modo:

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])
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.