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.

Aravind Veluchamy
sumber
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)
Emre
sumber
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"]
Paloma Manzano
sumber
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)
LUSAQX
sumber
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___ penggila data
sumber
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])
GManAsg
sumber