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.


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)

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

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)

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

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])
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.