Konvertieren Sie eine Liste von Listen in einen Pandas-Datenrahmen

30

Ich versuche, eine Liste von Listen, die wie folgt aussieht, in einen Pandas-Datenrahmen zu konvertieren

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

Grundsätzlich versuche ich, jedes Element im Array in einen Pandadatenrahmen mit vier Spalten zu konvertieren. Was wäre der beste Ansatz dazu als pd.Dataframe gibt mir nicht ganz das, wonach ich suche.

Aravind Veluchamy
quelle
siehe diese frage
keramat

Antworten:

36
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
quelle
4
Sie könnten es ein bisschen genauer definieren mit: DataFrame.from_records (data, columns = ['Team', 'Player', 'whatever-stat-is-that', 'position'])
Juan Ignacio Gil
1
Gibt es eine Möglichkeit, die Importe genauer zu spezifizieren? ZB möchte ich spezifizieren, dass DataFrame["Team"]auf das erste Element jeder Unterliste (dh data[i][0]) und DataFrame["Position"]auf das letzte Element jeder Unterliste (dh data[i][-1]) Bezug genommen werden muss ?
Ivo
@Ivo: Verwenden Sie den columnsParameter von DataFrame.from_records .
Emre
13

Sobald Sie die Daten haben:

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

Sie können einen Datenrahmen aus der Transponierung der Daten erstellen:

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

Ein anderer Weg:

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

Sie können es wie folgt direkt als Datenrahmen definieren:

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
quelle
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___ Datenenthusiast
quelle
0

Dieser war mit Abstand der einfachste:

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)

Wenn die Schlüssel nun die erste Liste in der Liste der Listen sind (Daten [0]), können Sie sie wie folgt Spaltenüberschriften im Datenrahmen zuweisen:

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
quelle