Gấu trúc có thể sử dụng cột làm chỉ mục không?


114

Tôi có một bảng tính như sau:

Locality    2005    2006    2007    2008    2009

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

Tôi không muốn hoán đổi cột với hàng theo cách thủ công. Có thể sử dụng dữ liệu đọc của gấu trúc vào một danh sách như sau:

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


5
Tôi sẽ không đồng ý. Mặc dù bản chất của câu hỏi là tương tự (và do đó cũng có câu trả lời), mọi người sẽ tìm kiếm một cái gì đó giống như câu hỏi này khi họ muốn 'tạo một cột trong chỉ mục'.
Michael Hoff

Câu trả lời:


222

Có, với set_index, bạn có thể tạo Localitychỉ mục hàng của mình.

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

Nếu inplace=Truekhông được cung cấp, set_indexkết quả là trả về khung dữ liệu đã sửa đổi.

Thí dụ:

> 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

Bạn có thể thay đổi chỉ mục như đã giải thích bằng cách sử dụng set_index. Bạn không cần phải hoán đổi các hàng với các cột theo cách thủ công, có một data.Tphương thức transpose ( ) trong gấu trúc thực hiện điều đó cho bạn:

> 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

thì bạn có thể tìm nạp các giá trị cột khung dữ liệu và chuyển đổi chúng thành danh sách:

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

[427000, 448000]

3

Bạn có thể đặt chỉ mục cột bằng cách sử dụng tham số index_col có sẵn trong khi đọc từ bảng tính trong Pandas.

Đây là giải pháp của tôi:

  1. Đầu tiên, nhập gấu trúc dưới dạng pd: import pandas as pd

  2. Đọc trong tên tệp bằng cách sử dụng pd.read_excel () (nếu bạn có dữ liệu của mình trong bảng tính) và đặt chỉ mục thành 'Địa phương' bằng cách chỉ định tham số index_col.

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

    Ở giai đoạn này nếu bạn gặp lỗi 'không có mô-đun nào có tên xlrd', hãy cài đặt nó bằng cách sử dụng pip install xlrd.

  3. Để kiểm tra trực quan, hãy đọc khung dữ liệu bằng cách sử dụng khung dữ liệu df.head()sẽ in đầu ra sau sc

  4. Bây giờ bạn có thể tìm nạp các giá trị của các cột mong muốn của khung dữ liệu và in nó

    sc2

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.