แปลงรายการของรายการเป็น Pandas Dataframe


30

ฉันพยายามที่จะแปลงรายการของรายการที่มีลักษณะดังนี้เป็น Pandas Dataframe

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

ฉันพยายามแปลงแต่ละรายการในอาเรย์เป็นกรอบข้อมูลแพนด้าซึ่งมีสี่คอลัมน์ อะไรจะเป็นวิธีที่ดีที่สุดในการทำเช่นนี้เนื่องจาก pd.Dataframe ไม่ได้ให้สิ่งที่ฉันกำลังมองหา


ดูคำถามนี้ใน stack overflow: stackoverflow.com/questions/.../…
keramat

คำตอบ:


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
คุณสามารถปรับแต่งได้อีกเล็กน้อยด้วย: DataFrame.from_records (ข้อมูล, คอลัมน์ = ['ทีม', 'ผู้เล่น', 'อะไรก็ตามที่เป็นสเตตัส - ว่า -,' ตำแหน่ง '])
Juan Ignacio Gil

1
มีวิธีการระบุการนำเข้าที่เฉพาะเจาะจงมากขึ้นหรือไม่? เช่นฉันต้องการระบุว่าDataFrame["Team"]ต้องอ้างถึงรายการแรกของแต่ละรายการย่อย (เช่นdata[i][0]) และDataFrame["Position"]เพื่ออ้างอิงถึงรายการสุดท้ายของแต่ละรายการย่อย (เช่นdata[i][-1])?
Ivo

@Ivo: ใช้columnsพารามิเตอร์ของDataFrame.from_records
เอ็ม

14

เมื่อคุณมีข้อมูล:

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

คุณสามารถสร้าง dataframe จากการแปลงข้อมูล:

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

อีกวิธีหนึ่ง:

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

5

คุณสามารถกำหนดโดยตรงเป็นกรอบข้อมูลดังนี้:

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)


0

อันนี้ง่ายที่สุด:

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)

ตอนนี้หากคีย์เป็นรายการแรกในรายการของรายการ (data [0]) คุณสามารถกำหนดให้กับส่วนหัวของคอลัมน์ใน dataframe ดังนี้:

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])
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.