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

팬더 데이터 프레임의 모든 열 머리글을 소문자로 만들고 싶습니다.

만약 내가 가지고 있다면:

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


답변

str.lowerfor로 쉽게 할 수 있습니다 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=unicode.lower
)

(파이썬 2)

또는

data.rename(
    columns=str.lower
)

(파이썬 3)


답변

다음은 간단한 방법입니다.
data.columns = data.columns.str.lower()


답변

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

가장 쉽지만 일부 헤더가 숫자이면 오류가 발생합니다.

숫자 헤더가 있으면 다음을 사용하십시오.

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


답변