Konwertuj listę list na ramkę danych Pandas

30

Próbuję przekonwertować listę list, która wygląda następująco na ramkę danych 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']]

Zasadniczo próbuję przekonwertować każdy element w tablicy na ramkę danych pandy, która ma cztery kolumny. Jakie byłoby najlepsze podejście do tego jako pd.Dataframe nie do końca daje mi to, czego szukam.

Aravind Veluchamy
źródło
zobacz to pytanie w przepełnieniu stosu: stackoverflow.com/questions/.../...
keramat

Odpowiedzi:

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
źródło
4
Możesz to nieco udoskonalić za pomocą: DataFrame.from_records (dane, kolumny = [„Zespół”, „Gracz”, „cokolwiek-stat-is-that”, „pozycja”])
Juan Ignacio Gil
1
Czy istnieje sposób na bardziej szczegółowe określenie importu? Np. Chcę sprecyzować, że DataFrame["Team"]musi odnosić się do pierwszego elementu każdej podlisty (tj. data[i][0]) I DataFrame["Position"]do ostatniego elementu każdej podlisty (tj. data[i][-1])?
Ivo
@Ivo: użyj columnsparametru DataFrame.from_records .
Emre
14

Po uzyskaniu danych:

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

Możesz utworzyć ramkę danych z transponowanych danych:

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

Inny sposób:

df = pd.DataFrame(data)
df = df.transpose()
df.columns = ["Team", "Player", "Salary", "Role"]
Paloma Manzano
źródło
5

Możesz po prostu bezpośrednio zdefiniować go jako ramkę danych w następujący sposób:

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
źródło
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)
entuzjasta danych tharun___
źródło
0

Ten był zdecydowanie najprostszy:

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)

teraz, jeśli klucze są pierwszą listą na liście list (dane [0]), możesz przypisać je do nagłówków kolumn w ramce danych w następujący sposób:

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
źródło