팬더는 열을 색인으로 사용할 수 있습니까?


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그 결과 수정 된 dataframe를 반환합니다.

예:

> 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. 행을 열로 수동으로 바꿀 필요가 없습니다. Pandas에는이를 대신하는 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

Pandas의 스프레드 시트에서 읽는 동안 사용 가능한 index_col 매개 변수를 사용 하여 열 색인을 설정할 수 있습니다 .

내 해결책은 다음과 같습니다.

  1. 먼저 pandas를 pd로 가져옵니다. import pandas as pd

  2. pd.read_excel ()을 사용하여 파일 이름을 읽고 ( 스프레드 시트에 데이터가있는 경우) index_col 매개 변수를 지정하여 색인을 'Locality'로 설정합니다.

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

    이 단계에서 'xlrd라는 모듈 없음'오류가 발생하면 pip install xlrd.

  3. 육안 검사를 df.head()위해 다음 출력을 인쇄하는 데이터 프레임을 읽으십시오.sc

  4. 이제 데이터 프레임의 원하는 열 값을 가져 와서 인쇄 할 수 있습니다.

    sc2

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.