기본 Pandas: DataFrame 열 이름 바꾸기
여러 열이 있는 pandas DataFrame이 있다고 가정해 보겠습니다.
[ins] In [1]: import pandas as pd
...: import numpy as np
...:
...: df = pd.DataFrame(np.random.rand(5,5), columns=['A', 'B', 'C', 'D', 'E'])
...: df
Out[1]: A B C D E
0 0.811204 0.022184 0.179873 0.705248 0.098429
1 0.905231 0.447630 0.970045 0.744982 0.566889
2 0.805913 0.569044 0.760091 0.833827 0.148091
3 0.285781 0.262952 0.250169 0.496548 0.604798
4 0.420414 0.463825 0.025779 0.287122 0.880970
열의 이름을 바꾸려면 어떻게 해야 합니까? 이 작업을 수행하는 방법은 여러 가지가 있으며 실제로 이름 바꾸기가 아닌 간접적인 답변으로 시작하겠습니다. 때때로 열 이름을 바꾸고자 하는 바람은 데이터 변경과 관련이 있으므로 대신 열을 추가하게 될 수도 있습니다. 작업 중인 항목, 여유 메모리 양, 처리할 열 수에 따라 임시 탐색을 처리할 때 다른 열을 추가하는 것이 좋습니다. 중간 데이터가 있으므로 항상 뒤로 물러서서 단계를 반복하십시오. 이전 열을 삭제하여 이름 바꾸기를 완료할 수 있습니다. 이는 그다지 효율적이지는 않지만 임시 데이터 탐색의 경우 매우 일반적입니다.
df['e'] = np.maximum(df['E'], .5)
그러나 실제로 제자리에서 열의 이름을 바꾸고 싶다고 가정해 보겠습니다. 다음은 쉬운 방법이지만 한 번에 모든 열을 업데이트해야 합니다.
[ins] In [4]: print(type(df.columns))
...:
...: df.columns = ['A', 'B', 'C', 'D', 'EEEE', 'e']
<class 'pandas.core.indexes.base.Index'>
이제 열은 문자열 목록이 아니라 인덱스이므로 내부에서 DataFrame은 여기에서 올바른 작업을 수행할 수 있도록 몇 가지 작업을 수행합니다.
[ins] In [5]: try:
...: df.columns = ['a', 'b']
...: except ValueError as ve:
...: print(ve)
...:
Length mismatch: Expected axis has 6 elements, new values have 2 elements
이제 하나의 열만 이름을 바꾸도록 전체 열 목록을 설정해야 하는 것은 편리하지 않으므로 다른 방법이 있습니다. 먼저
rename
메서드를 사용할 수 있습니다. 이 메서드는 이전 열 이름을 새 열 이름으로 매핑하므로 원하는 만큼 이름을 바꿀 수 있습니다. 축 0 또는 "인덱스"는 DataFrame(일명 행)의 기본 인덱스이고 축 1 또는 "열"은 열에 대한 것임을 기억하십시오. 여기서 기본값은 인덱스이므로 이 인수를 전달해야 합니다.df.rename({'A': 'aaa', 'B': 'bbb', 'EEE': 'EE'}, axis="columns")
기본적으로 일치하지 않는 매핑에 대해 불평하지 않습니다('EEE'는 열이 아니지만 이 예에서는 'EEEE'가 있음).
errors='raise'
를 전달하여 강제로 오류를 발생시킬 수 있습니다. 또한 이 메서드는 수정된 DataFrame을 반환하므로 많은 DataFrame 메서드와 마찬가지로 변경 사항을 DataFrame에 유지하려면 inplace=True
를 전달해야 합니다. 또는 결과를 동일한 변수에 다시 할당할 수 있습니다.df.rename({'A': 'aaa', 'B': 'bbb', 'EEE': 'EE'}, axis=1, inplace=True)
축을 1 또는
set_index
로 설정하고 columns
메서드를 사용하여 열을 변경할 수도 있습니다. 다시 말하지만 inplace=True
변수를 재할당하지 않으려면 DataFrame을 제자리에서 업데이트합니다(이전 버전의 pandas에서는 기본값이지만 버전 1.0 이상에서는 기본값은 False).df.set_axis(['A', 'B', 'C', 'D', 'E', 'e'], axis="columns")
rename
메서드도 함수를 사용합니다. 함수(또는 사전)를 인덱스 또는 열 매개변수로 전달하면 해당 축에 적용됩니다. 이렇게 하면 다음과 같이 후행 공백을 제거하는 것과 같이 일반 열 이름 정리를 쉽게 수행할 수 있습니다.df.columns = ['A ', 'B ', 'C ', 'D ', 'E ', 'e']
df.rename(columns=lambda x: x.strip(), inplace=True)
또한
inplace=True
를 사용하지 않는 주요 이유 중 하나는 DataFrame 생성 및 초기 설정에서 메서드 체이닝 때문입니다. 종종, 당신은 이런 일을 하게 될 것입니다.df = pd.DataFrame(np.random.rand(2,5,), columns=np.random.rand(5)).rename(columns=lambda x: str(x)[0:5])
당신이 동의하는 것이 이것보다 훨씬 낫습니다.
df = pd.DataFrame(np.random.rand(2,5,), columns=np.random.rand(5))
df.columns = [str(x)[0:5] for x in df.columns]
Reference
이 문제에 관하여(기본 Pandas: DataFrame 열 이름 바꾸기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/wrighter/basic-pandas-renaming-a-dataframe-column-39l텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)