Konversi daftar daftar menjadi Bingkai Data Pandas


30

Saya mencoba mengonversi daftar daftar yang terlihat seperti yang berikut ini menjadi Bingkai Data 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']]

Saya pada dasarnya mencoba mengubah setiap item dalam array menjadi bingkai data panda yang memiliki empat kolom. Apa yang akan menjadi pendekatan terbaik untuk ini sebagai pd.Dataframe tidak cukup memberi saya apa yang saya cari.


lihat pertanyaan ini di stack overflow: stackoverflow.com/questions/.../…
keramat

Jawaban:


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
Anda bisa memperbaikinya sedikit lagi dengan: DataFrame.from_records (data, kolom = ['Tim', 'Pemain', 'apa pun stat-is-that', 'position'])
Juan Ignacio Gil

1
Apakah ada cara untuk menentukan impor lebih spesifik? Misalnya saya ingin menentukan yang DataFrame["Team"]harus merujuk ke item pertama dari setiap sublist (yaitu data[i][0]) dan DataFrame["Position"]merujuk ke item terakhir dari masing-masing sublist (yaitu data[i][-1])?
Ivo

@Ivo: Gunakan columnsparameter DataFrame.from_records .
Emre

14

Setelah Anda memiliki data:

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

Anda dapat membuat bingkai data dari mentransposisi data:

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

Cara lain:

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

5

Anda bisa langsung mendefinisikannya sebagai bingkai data sebagai berikut:

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

Sejauh ini yang paling sederhana:

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)

sekarang, jika kunci adalah daftar pertama dalam daftar daftar (data [0]), Anda dapat menetapkannya ke tajuk kolom dalam kerangka data seperti:

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])
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.