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.


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)

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

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)

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

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])
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.