我想让我的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
....
我不会提前知道每个列标题的名称。
答案 0 :(得分:118)
你可以这样做:
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
答案 1 :(得分:62)
您可以使用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
示例:
HttpContext
答案 2 :(得分:12)
如果要使用链式方法调用进行重命名,可以使用
data.rename(
columns=unicode.lower
)
(Python 2)
或
data.rename(
columns=str.lower
)
(Python 3)
答案 3 :(得分:1)
df.columns = df.columns.str.lower()
是最简单的方法,但是如果某些标头为数字,则会给出错误消息
如果您有数字标题,请使用此标题:
df.columns = [str(x).lower() for x in df.columns]
答案 4 :(得分:0)
这是一种简单的方法:
data.columns = data.columns.str.lower()
答案 5 :(得分:0)
我注意到如果列名由数字组成(例如“123”),其他一些答案将失败。也试试这些来处理这种情况。
选项 1:使用 df.rename
def rename_col(old_name):
return str(old_name).lower()
df.rename(rename_col)
选项 2(来自 this comment):
df.columns.astype(str).str.lower()