![](/img/trans.png)
[英]How can I transform a pandas dataframe into a dictionary without the column headers?
[英]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]
基於官方文檔的另一個約定:
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.