본문 바로가기
판다스/판다스 팁

[pandas] 파일에서 데이터 프레임을 읽어올 때 공통된 열이름이 있을 때 해결책

by 김판다t 2023. 6. 25.
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)

 

결과는 동일하다