2017-10-17 1 views
2

df.set_index() 기능으로 DataFrame 색인 열을 변경하고 싶습니다. 이것은 기능적인 해결책을 제공하지만, 내가 제거하고자하는 "추가"행을 생성합니다. 인덱스 이름을 잃지 않고 set_index() 뒤에 여분의 행을 제거하는 방법은 무엇입니까?

df = pd.DataFrame({'A': ['a','b','c'], 'B': ['d','e','f'], 'C': [1,2,3]}) 

df

은 다음과 같습니다

df.set_index('C') 

이 결과 : 다음과 같이

A B 
C 
1 a e 
2 b f 
3 c g 

가 어떻게이 dataframe 모양을 만들 수 있습니다

A B C 
0 a d 1 
1 b e 2 
2 c f 3 

가 DataFrame 인덱스를 변경?

C A B 
1 a e 
2 b f 
3 c g 

나는 비슷한 질문 here을 보았다하지만 reset_index()를 사용하여 솔루션은 원하는 결과를 제공하지 않았다. 내가 가지고있는 값을 유지하고 싶습니다 C 및 추가 행만 제거하십시오.

답변

5

당신이 C 열 인덱스 으로 갖고 싶어 :

In [50]: r = df.set_index('C') 

In [51]: r 
Out[51]: 
    A B 
C 
1 a d 
2 b e 
3 c f 

In [52]: r.index.name 
Out[52]: 'C' 

In [53]: r.columns.name is None 
Out[53]: True 

In [54]: r = r.rename_axis(None,0).rename_axis('C',1) 

In [57]: r 
Out[57]: 
C A B 
1 a d 
2 b e 
3 c f 

In [55]: r.index.name is None 
Out[55]: True 

In [56]: r.columns.name 
Out[56]: 'C' 

참고 :하지만 꽤 보인다 오해의 소지가 ...

당신은 단지 당신이 원하는 것과 DataFrame 쇼 (인쇄)를하려면
+0

너무 깔끔한 솔루션입니다. –

+2

@ScottBoston, 고마워요! 하지만 내 생각 엔 화장 용 물건을 피하는게 좋을 것 같아요. – MaxU

+1

@MapleSyrup ummm ..... 이것으로 데이터를 보여줍니다 .... – Wen

3

[[]] 이것을보십시오 :

df[['C','A','B']] 

예 :

df = pd.DataFrame({'A': ['a','b','c'], 'B': ['d','e','f'], 'C': [1,2,3]}) 
print(df) 

    A B C 
0 a d 1 
1 b e 2 
2 c f 3 

df = df[['C','A','B']] 
print(df) 

    C A B 
0 1 a d 
1 2 b e 
2 3 c f 
+1

N 열 =의'안양 [대한보다 정식 버전 [-1 C :] + C의 [: - 1 ]]'어디'c = df.columns.tolist()' –

1

...

print (df[['C','A','B']].to_string(index=False)) 
C A B 
1 a d 
2 b e 
3 c f 
관련 문제