我怎样才能使熊猫数据框列标题全部小写?

我想在我的熊猫数据框中的所有列标题小写

例子

如果有:

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

我不会提前知道每个列标题的名称。

161936 次浏览

你可以这样做:

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

如果希望使用链式方法调用进行重命名,可以使用

data.rename(columns=str.lower)

如果不链接方法调用,可以添加 inplace=True

data.rename(columns=str.lower, inplace=True)

你可以很容易地做到这一点与 str.lowercolumns:

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
df.columns = df.columns.str.lower()

是最简单的,但是如果一些头是数字的,就会出错

如果你有数字标题,那么使用这个:

df.columns = [str(x).lower() for x in df.columns]

我注意到,如果一个列名是由数字组成的(例如“123”) ,其他一些答案就会失败。试试这些来处理这样的情况。

选择1: 使用 重命名

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)

参数: 制图员: 应用于该轴的值的类似于指针或函数的转换。使用映射器和轴指定用映射器指定的轴,或者使用索引和列。