csv파일이나 엑셀파일에서 데이터 프레임을 불러올 때 열 이름이 공통인 경우 넘버링을 해서 구분한다
그 때 넘버링이 되지 않기를 바랄 경우에 대한 해결책
실습을 위해 파일이 필요한데 열 이름이 공통인 파일을 제공하고 여러분이 다운받아서 실습해보는 것은 번거로우니
문자열을 csv파일처럼 읽는 방법을 사용하자 (https://kimpanda.tistory.com/137)
import pandas as pd
import io
str1 = '''
A,B,C,A
1,2,3,4
'''
df = pd.read_csv(io.StringIO(str1))
df
위 df는 columns에 A가 두개있어서 두번째 A가 A.1로 구분되었다
이런 경우에 넘버링이 되지 않고 원래의 열 이름을 그대로 갖고 있기를 바라는 경우도 있을 것이다.
그렇다면 아래의 코드를 사용하자
df.rename(lambda x: x.split('.')[0], axis=1)
output:
기존의 다른 columns에 마침표가 들어가 있는 경우가 없다면 위 코드로 가능하다
판다스에서는 함수가 원본을 덮어쓰지 않으므로 원본 df를 바꾸고 싶다면 결과를 다시 df로 지정해야 하는 것은 잊지말자.
# df 원본 수정하기
df = df.rename(lambda x: x.split('.')[0], axis=1)
다른 columns에도 마침표가 있거나, 보다 엄밀한 상황에서 적용하는 코드는 다음과 같다
df.set_axis(df.columns.str.replace(r'\.\d+$', '', regex=True), axis=1)
결과는 동일하다
'판다스 > 판다스 팁' 카테고리의 다른 글
[pandas] 정규표현식에서 그룹명을 지정하기 (0) | 2023.08.06 |
---|---|
[pandas] 일부만 %로 표기된 열을 float으로 바꿀 때 (0) | 2023.07.05 |
[pandas] 문자열을 csv파일처럼 읽어 데이터 프레임으로 부르고 싶을 때 (0) | 2023.06.25 |
numpy 에서 random 함수를 사용할 때 seed를 생성하는 방법 (0) | 2023.06.14 |
[pandas] 데이터 프레임의 인덱스에서 특정 값 제거하기 (0) | 2023.06.01 |