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


96

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

만약 내가 가지고 있다면:

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
....

각 열 헤더의 이름을 미리 알지 못합니다.


10
더 쉬운df.columns = df.columns.str.lower()
알렉스 몬토야

답변:


175

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

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

7
lower (column1) == lower (column2) (예 : 'a'및 'A') 인 경우 중복 된 열 이름이 발생할 수 있습니다. 나중에 열을 참조 할 때 의도하지 않은 결과가 발생할 수 있습니다. (예 : data [ 'a']는 모든 열이 'a'인 Series가 아닌 DataFrame을 반환합니다.) 예를 보려면이 요점을 참조하십시오. gist.github.com/grisaitis/170e82a008480acb4fa3
grisaitis

1
[x.lower() for x in data.columns]:에 해당합니다[x.lower() for x in data]
joctee

당신이 그것에있는 동안, 그것은 사용하기 좋은입니다[x.lower().strip() for x in df0]
파블 Kranzberg

@PawelKranzberg 열 이름을 낮추는 방법을 MultiIndex
알고 계십니까?

1
@curious_nustian-예, 예 :df.index.names = [x.lower().strip() for x in df.index.names]
Pawel Kranzberg

99

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

19

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

data.rename(
    columns=unicode.lower
)

(파이썬 2)

또는

data.rename(
    columns=str.lower
)

(파이썬 3)


0

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


필드가 숫자 인 경우,이 오류를 줄 것이다
Chadee 푸 아드

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

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

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

df.columns = [str(x).lower() for x in df.columns]
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.