如何小写列名并删除空格?

How do I lowercase columns names and removing white spaces?

提问人:lina_ayv 提问时间:11/5/2023 最后编辑:Herickslina_ayv 更新时间:11/5/2023 访问量:114

问:

我需要将列名小写并消除空白。 使用该方法后,我收到错误:.lower()

'Index' object has no attribute 'lower'

enter image description here

我做错了什么?

Python Pandas 分析

评论

0赞 Panda Kim 11/5/2023
df.columns.str.lower()当然,不要忘记此代码不会覆盖现有的 df.columns。
0赞 lina_ayv 11/5/2023
那么我应该怎么做才能在这种方法之后覆盖df列呢?以及如何消除列名中的空白?
0赞 gtomer 11/5/2023
请看下面的答案

答:

1赞 gtomer 11/5/2023 #1

下部大小写列名称:

df.columns = df.columns.str.lower()

删除空格:

df.columns = df.columns.str.strip()

评论

0赞 lina_ayv 11/5/2023
这个奏效了,谢谢:)
0赞 lina_ayv 11/5/2023
删除列名中的空白怎么办?也许你可以提出一些建议?
0赞 gtomer 11/5/2023
请参阅上面的更新答案
0赞 mkasprowicz 11/5/2023 #2

正如评论中提到的,是一个直接的答案。str.lower()

您可能还对以下内容感兴趣,因为它返回包含重命名列的整个数据帧,并允许就地修改。df.rename(columns=str.lower)

评论

0赞 lina_ayv 11/5/2023
非常感谢,如何消除列名中的空白?
0赞 lina_ayv 11/5/2023
顺便说一句,使用上述方法后,我未经任何修改就获得了列名
0赞 mkasprowicz 11/5/2023
你说的间隙是什么意思——单词之间的空格?关于第二个问题,你能分享代码和输出的屏幕吗?
0赞 lina_ayv 11/5/2023
是的,我的意思是空格。这是代码“df.columns = df.columns.str.strip() df”作为输出,我得到了带有空格的相同列名(不幸的是,我无法在评论中与您共享屏幕)
2赞 Adrien Riaux 11/5/2023 #3

若要完成前面的答案,还可以使用 map 应用所需的任何转换,请参阅以下示例:

df = pd.DataFrame({
    "Column 1": [1, 2, 3],
    "COLUMN 2 ": [4, 5, 6]
})

df.columns = df.columns.map(lambda x: x.lower().strip())

如果你想用下划线或类似的东西替换所有空格,你可以使用正则表达式:

import re
df.columns = df.columns.map(lambda x: re.sub('\s+', '_', x.lower().strip()))