2013-11-01 171 views
31

我要讓所有的列標題在我的熊貓數據幀小寫蟒蛇:讓大熊貓據幀列標題全部小寫

例如,如果我有:

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

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

謝謝!

回答

60

你可以這樣說:

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 
+3

請注意,當lower(column1)== lower(column2)(例如'a'和'A')時,這會導致重複的列名稱。這在稍後參考列時可能會產生意想不到的後果。 (例如data ['a']將返回一個DataFrame,而不是一個Series,所有列名爲'a')。例如:https://gist.github.com/grisaitis/170e82a008480acb4fa3 – grisaitis

+0

'[x.lower()for data.columns]'相當於: '[x.lower()for x在數據中]' – joctee

9

如果你想使用鏈式方法調用來完成重命名,你可以使用

data.rename(
    columns=unicode.lower 
) 

(Python的2)

data.rename(
    columns=str.lower 
) 

(Python 3中)

27

你可以與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