팬더와 열 레이블을 사용하는 DataFrame이 있는데 원래 열 레이블을 바꾸려면 편집해야합니다.
A
원래 열 이름이 다음 과 같은 DataFrame 에서 열 이름을 변경하고 싶습니다 .
['$a', '$b', '$c', '$d', '$e']
에
['a', 'b', 'c', 'd', 'e'].
편집 한 열 이름을 목록에 저장했지만 열 이름을 바꾸는 방법을 모르겠습니다.
답변
.columns
속성에 지정하십시오 .
>>> df = pd.DataFrame({'$a':[1,2], '$b': [10,20]})
>>> df.columns = ['a', 'b']
>>> df
a b
0 1 10
1 2 20
답변
특정 열 이름 바꾸기
df.rename()
함수를 사용하고 이름을 바꿀 열을 참조하십시오. 모든 열의 이름을 바꿀 필요는 없습니다.
df = df.rename(columns={'oldName1': 'newName1', 'oldName2': 'newName2'})
# Or rename the existing DataFrame (rather than creating a copy)
df.rename(columns={'oldName1': 'newName1', 'oldName2': 'newName2'}, inplace=True)
최소 코드 예
df = pd.DataFrame('x', index=range(3), columns=list('abcde'))
df
a b c d e
0 x x x x x
1 x x x x x
2 x x x x x
다음 방법은 모두 작동하며 동일한 출력을 생성합니다.
df2 = df.rename({'a': 'X', 'b': 'Y'}, axis=1) # new method
df2 = df.rename({'a': 'X', 'b': 'Y'}, axis='columns')
df2 = df.rename(columns={'a': 'X', 'b': 'Y'}) # old method
df2
X Y c d e
0 x x x x x
1 x x x x x
2 x x x x x
수정이 제자리에 있지 않으므로 결과를 다시 할당해야합니다. 또는 다음을 지정하십시오 inplace=True
.
df.rename({'a': 'X', 'b': 'Y'}, axis=1, inplace=True)
df
X Y c d e
0 x x x x x
1 x x x x x
2 x x x x x
v0.25부터 errors='raise'
유효하지 않은 열 이름 바꾸기가 지정된 경우 오류를 발생 시키도록 지정할 수도 있습니다 . v0.25 rename()
문서를 참조하십시오 .
재 할당 열 헤더
사용 df.set_axis()
과 axis=1
과 inplace=False
(사본을 반환).
df2 = df.set_axis(['V', 'W', 'X', 'Y', 'Z'], axis=1, inplace=False)
df2
V W X Y Z
0 x x x x x
1 x x x x x
2 x x x x x
이렇게하면 복사본이 반환되지만 설정을 통해 DataFrame을 내부에서 수정할 수 있습니다 inplace=True
(버전 <= 0.24의 기본 동작이지만 향후 변경 될 수 있음).
헤더를 직접 할당 할 수도 있습니다.
df.columns = ['V', 'W', 'X', 'Y', 'Z']
df
V W X Y Z
0 x x x x x
1 x x x x x
2 x x x x x
답변
이 rename
메소드는 다음과 같은 함수를 사용할 수 있습니다 .
In [11]: df.columns
Out[11]: Index([u'$a', u'$b', u'$c', u'$d', u'$e'], dtype=object)
In [12]: df.rename(columns=lambda x: x[1:], inplace=True)
In [13]: df.columns
Out[13]: Index([u'a', u'b', u'c', u'd', u'e'], dtype=object)
답변
텍스트 데이터 작업에 설명 된대로 :
df.columns = df.columns.str.replace('$','')
답변
팬더 0.21+ 답변
버전 0.21의 컬럼 이름 변경에 대한 중요한 업데이트가 있습니다.
- 이
rename
방법 은axis
매개 변수를 추가 했습니다.columns
또는1
. 이 업데이트는이 메소드가 나머지 팬더 API와 일치하도록합니다. 그것은 여전히 가지고index
와columns
매개 변수가 있지만 더 이상 사용하지 않아도됩니다. set_axis
방법 와inplace
세트에False
당신이 목록의 모든 인덱스 또는 열 레이블의 이름을 변경 할 수 있습니다.
팬더 0.21+의 예
샘플 DataFrame을 생성하십시오.
df = pd.DataFrame({'$a':[1,2], '$b': [3,4],
'$c':[5,6], '$d':[7,8],
'$e':[9,10]})
$a $b $c $d $e
0 1 3 5 7 9
1 2 4 6 8 10
사용 rename
으로 axis='columns'
또는axis=1
df.rename({'$a':'a', '$b':'b', '$c':'c', '$d':'d', '$e':'e'}, axis='columns')
또는
df.rename({'$a':'a', '$b':'b', '$c':'c', '$d':'d', '$e':'e'}, axis=1)
두 가지 모두 결과는 다음과 같습니다.
a b c d e
0 1 3 5 7 9
1 2 4 6 8 10
이전 메소드 서명을 계속 사용할 수 있습니다.
df.rename(columns={'$a':'a', '$b':'b', '$c':'c', '$d':'d', '$e':'e'})
이 rename
함수는 각 열 이름에 적용될 함수도 허용합니다.
df.rename(lambda x: x[1:], axis='columns')
또는
df.rename(lambda x: x[1:], axis=1)
사용 set_axis
목록과 함께inplace=False
set_axis
열 수 (또는 인덱스)와 길이가 같은 메소드에 목록을 제공 할 수 있습니다 . 현재 inplace
기본값은 True
이지만 이후 릴리스에서는 inplace
기본값이 False
됩니다.
df.set_axis(['a', 'b', 'c', 'd', 'e'], axis='columns', inplace=False)
또는
df.set_axis(['a', 'b', 'c', 'd', 'e'], axis=1, inplace=False)
왜 사용하지 df.columns = ['a', 'b', 'c', 'd', 'e']
않습니까?
이와 같이 열을 직접 할당하는 데 아무런 문제가 없습니다. 완벽하게 좋은 솔루션입니다.
사용의 이점은 set_axis
메소드 체인의 일부로 사용될 수 있으며 DataFrame의 새 사본을 리턴한다는 것입니다. 이것이 없으면 열을 다시 할당하기 전에 체인의 중간 단계를 다른 변수에 저장해야합니다.
# new for pandas 0.21+
df.some_method1()
.some_method2()
.set_axis()
.some_method3()
# old way
df1 = df.some_method1()
.some_method2()
df1.columns = columns
df1.some_method3()
답변
모든 열 이름에서 $ 기호 만 제거하려고하므로 다음과 같이하면됩니다.
df = df.rename(columns=lambda x: x.replace('$', ''))
또는
df.rename(columns=lambda x: x.replace('$', ''), inplace=True)
답변
df.columns = ['a', 'b', 'c', 'd', 'e']
기존 이름은 입력 한 순서대로 제공 한 이름으로 바뀝니다.
![](http://daplus.net/wp-content/uploads/2023/04/coupang_part-e1630022808943-2.png)