パンダのデータフレームの列ヘッダーをすべて小文字にするにはどうすればよいですか?


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()
Alex Montoya

回答:


174

あなたはこのようにそれを行うことができます:

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']はシリーズではなくDataFrameを返し、すべての列は 'a'という名前になります)。例については、この要旨を参照してください: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]
Pawel Kranzberg '28

@PawelKranzbergの列名を下げる方法はありますかMultiIndex
curious_nustian

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
)

(Python 2)

または

data.rename(
    columns=str.lower
)

(Python 3)


0

ここに簡単な方法があります: data.columns = data.columns.str.lower()


フィールドが数値の場合、エラーになります
Chadee Fouad

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.