Pandas DataFrame 객체에서 인덱스 재정의


84

팬더 DataFrame객체 를 다시 색인화하려고합니다 .

From:
            a   b   c
        0   1   2   3
        1  10  11  12
        2  20  21  22

To :
           b   c
       1   2   3
      10  11  12
      20  21  22

나는 이것에 대해 아래와 같이 진행하고 있으며 잘못된 답을 얻고 있습니다. 이 작업을 수행하는 방법에 대한 단서가 있습니까?

>>> col = ['a','b','c']
>>> data = DataFrame([[1,2,3],[10,11,12],[20,21,22]],columns=col)
>>> data
    a   b   c
0   1   2   3
1  10  11  12
2  20  21  22
>>> idx2 = data.a.values
>>> idx2
array([ 1, 10, 20], dtype=int64)
>>> data2 = DataFrame(data,index=idx2,columns=col[1:])
>>> data2
     b   c
1   11  12
10 NaN NaN
20 NaN NaN

왜 이런 일이 일어나는지 아십니까?


1
첫 번째 DF를 사용하여 두 번째를 빌드하기 때문에 idx2가 data.index와 교차하는 행만 가져옵니다. 행 1
RuiDC

답변:


188

단순히 set_index방법을 사용하지 않는 이유는 무엇 입니까?

In : col = ['a','b','c']

In : data = DataFrame([[1,2,3],[10,11,12],[20,21,22]],columns=col)

In : data
Out:
    a   b   c
0   1   2   3
1  10  11  12
2  20  21  22

In : data2 = data.set_index('a')

In : data2
Out:
     b   c
a
1    2   3
10  11  12
20  21  22

17
인덱스 이름을 제거하려면 원본 예에서와 같이 : data2.index.name = None
Daniele

5

색인에서 'a'를 원하지 않는 경우

에 :

col = ['a','b','c']

data = DataFrame([[1,2,3],[10,11,12],[20,21,22]],columns=col)

data

밖:

    a   b   c
0   1   2   3
1  10  11  12
2  20  21  22

에 :

data2 = data.set_index('a')

밖:

     b   c
a
1    2   3
10  11  12
20  21  22

에 :

data2.index.name = None

밖:

     b   c
 1   2   3
10  11  12
20  21  22

1
두 번째 Out은 올바르지 않습니다. 왼쪽에 0, 1, 2를 포함하는 이름없는 열이 여전히 있습니다.
Yster
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.