programing

판다 데이터 프레임 열 헤더를 모두 소문자로 만들려면 어떻게 해야 합니까?

batch 2023. 6. 30. 22:13
반응형

판다 데이터 프레임 열 헤더를 모두 소문자로 만들려면 어떻게 해야 합니까?

내 판다의 모든 열 헤더를 데이터 프레임 하부 케이스로 만들고 싶습니다.

내가 가지고 있는 경우:

data =

  country country isocode  year     XRAT          tcgdp
0  Canada             CAN  2001  1.54876   924909.44207
1  Canada             CAN  2002  1.56932   957299.91586
2  Canada             CAN  2003  1.40105  1016902.00180
....

다음과 같은 작업을 수행하여 XRAT를 xrat로 변경하고 싶습니다.

data.headers.lowercase()

그래서 나는 다음을 얻습니다.

  country country isocode  year     xrat          tcgdp
0  Canada             CAN  2001  1.54876   924909.44207
1  Canada             CAN  2002  1.56932   957299.91586
2  Canada             CAN  2003  1.40105  1016902.00180
3  Canada             CAN  2004  1.30102  1096000.35500
....

각 열 머리글의 이름을 미리 알 수 없습니다.

다음과 같이 할 수 있습니다.

data.columns = map(str.lower, data.columns)

또는

data.columns = [x.lower() for x in data.columns]

예:

>>> data = pd.DataFrame({'A':range(3), 'B':range(3,0,-1), 'C':list('abc')})
>>> data
   A  B  C
0  0  3  a
1  1  2  b
2  2  1  c
>>> data.columns = map(str.lower, data.columns)
>>> data
   a  b  c
0  0  3  a
1  1  2  b
2  2  1  c

당신은 그것을 쉽게 할 수 있습니다.columns:

df.columns = df.columns.str.lower()

예:

In [63]: df
Out[63]: 
  country country isocode  year     XRAT         tcgdp
0  Canada             CAN  2001  1.54876  9.249094e+05
1  Canada             CAN  2002  1.56932  9.572999e+05
2  Canada             CAN  2003  1.40105  1.016902e+06

In [64]: df.columns = df.columns.str.lower()

In [65]: df
Out[65]: 
  country country isocode  year     xrat         tcgdp
0  Canada             CAN  2001  1.54876  9.249094e+05
1  Canada             CAN  2002  1.56932  9.572999e+05
2  Canada             CAN  2003  1.40105  1.016902e+06

연결된 메서드 호출을 사용하여 이름 바꾸기를 수행하려면 다음을 사용할 수 있습니다.

data.rename(columns=str.lower)

메서드 호출을 연결하지 않을 경우 추가할 수 있습니다.inplace=True

data.rename(columns=str.lower, inplace=True)
df.columns = df.columns.str.lower()

가장 쉽지만 일부 헤더가 숫자인 경우 오류가 발생합니다.

숫자 머리글이 있는 경우 다음을 사용합니다.

df.columns = [str(x).lower() for x in df.columns]

열 이름이 숫자로 구성된 경우(예: "123") 다른 답변 중 일부가 실패합니다.이러한 경우에도 처리할 수 있습니다.

옵션 1: df.rename 사용

def rename_col(old_name):
    return str(old_name).lower()

df.rename(rename_col)

옵션 2(이 설명에서):

df.columns.astype(str).str.lower()

공식 문서에 근거한 또 다른 협약:

frame.rename(mapper=lambda x:x.lower(), axis='columns', inplace=True)

매개 변수: 매퍼:해당 축의 값에 적용할 딕트 유사 변환 또는 함수 변환.매퍼 및 축을 사용하여 매퍼로 대상을 지정하거나 인덱스 및 열을 지정할 수 있습니다.

언급URL : https://stackoverflow.com/questions/19726029/how-can-i-make-pandas-dataframe-column-headers-all-lowercase

반응형