แพนด้าสามารถใช้คอลัมน์เป็นดัชนีได้หรือไม่?


114

ฉันมีสเปรดชีตดังนี้:

Locality    2005    2006    2007    2008    2009

ABBOTSFORD  427000  448000  602500  600000  638500
ABERFELDIE  534000  600000  735000  710000  775000
AIREYS INLET459000  440000  430000  517500  512500

ฉันไม่ต้องการสลับคอลัมน์กับแถวด้วยตนเอง เป็นไปได้ไหมที่จะใช้ข้อมูลการอ่านแพนด้ากับรายการดังนี้:

data['ABBOTSFORD']=[427000,448000,602500,600000,638500]
data['ABERFELDIE']=[534000,600000,735000,710000,775000]
data['AIREYS INLET']=[459000,440000,430000,517500,512500]


5
ฉันไม่เห็นด้วย แม้ว่าสาระสำคัญของคำถามจะคล้ายกัน (ดังนั้นคำตอบก็เช่นกัน) ผู้คนจะค้นหาคำถามเช่นนี้เมื่อต้องการ "สร้างคอลัมน์ในดัชนี"
Michael Hoff

คำตอบ:


222

ใช่ด้วยset_indexคุณสามารถสร้างLocalityดัชนีแถวของคุณได้

data.set_index('Locality', inplace=True)

หากinplace=Trueไม่ได้ระบุไว้ให้set_indexส่งคืนดาต้าเฟรมที่แก้ไขเป็นผลลัพธ์

ตัวอย่าง:

> import pandas as pd
> df = pd.DataFrame([['ABBOTSFORD', 427000, 448000],
                     ['ABERFELDIE', 534000, 600000]],
                    columns=['Locality', 2005, 2006])

> df
     Locality    2005    2006
0  ABBOTSFORD  427000  448000
1  ABERFELDIE  534000  600000

> df.set_index('Locality', inplace=True)
> df
              2005    2006
Locality                  
ABBOTSFORD  427000  448000
ABERFELDIE  534000  600000

> df.loc['ABBOTSFORD']
2005    427000
2006    448000
Name: ABBOTSFORD, dtype: int64

> df.loc['ABBOTSFORD'][2005]
427000

> df.loc['ABBOTSFORD'].values
array([427000, 448000])

> df.loc['ABBOTSFORD'].tolist()
[427000, 448000]

13

set_indexคุณสามารถเปลี่ยนดัชนีตามที่อธิบายไว้แล้วโดยใช้ คุณไม่จำเป็นต้องสลับแถวกับคอลัมน์ด้วยตนเองมีวิธีการ transpose ( data.T) ในแพนด้าที่ทำเพื่อคุณ:

> df = pd.DataFrame([['ABBOTSFORD', 427000, 448000],
                    ['ABERFELDIE', 534000, 600000]],
                    columns=['Locality', 2005, 2006])

> newdf = df.set_index('Locality').T
> newdf

Locality    ABBOTSFORD  ABERFELDIE
2005        427000      534000
2006        448000      600000

จากนั้นคุณสามารถดึงค่าคอลัมน์ดาต้าเฟรมและแปลงเป็นรายการ:

> newdf['ABBOTSFORD'].values.tolist()

[427000, 448000]

3

คุณสามารถตั้งค่าดัชนีคอลัมน์โดยใช้พารามิเตอร์index_colพร้อมใช้งานขณะอ่านจากสเปรดชีตใน Pandas

นี่คือทางออกของฉัน:

  1. ประการแรกนำเข้าแพนด้าเป็น pd: import pandas as pd

  2. อ่านในชื่อไฟล์โดยใช้pd.read_excel () (หากคุณมีข้อมูลของคุณในสเปรดชีต) และตั้งค่าดัชนีเป็น 'Locality' โดยระบุพารามิเตอร์ index_col

    df = pd.read_excel('testexcel.xlsx', index_col=0)

    ในขั้นตอนนี้หากคุณได้รับข้อผิดพลาด 'no module named xlrd' ให้ติดตั้งโดยใช้pip install xlrdไฟล์.

  3. สำหรับการตรวจสอบด้วยภาพโปรดอ่าน dataframe โดยใช้df.head()ซึ่งจะพิมพ์ผลลัพธ์ต่อไปนี้ sc

  4. ตอนนี้คุณสามารถดึงค่าของคอลัมน์ที่ต้องการของ dataframe และพิมพ์ได้

    sc2

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