簡體   English   中英

如何使 pandas dataframe 列標題全部小寫?

[英]How can I make pandas dataframe column headers all lowercase?

我想將 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
....

我不會提前知道每個列的名稱 header。

你可以這樣做:

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.lower輕松str.lower 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)

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)

參數:映射器:類字典或 function 轉換以應用於該軸的值。 使用映射器和軸指定映射器或索引和列的目標軸。

這是一個簡單的方法: data.columns = data.columns.str.lower()

df.rename(columns = lambda x:x.lower())

add inplace= True 永久更改

df.rename(columns = lambda x:x.lower(), inplace=True )

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM