You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何去除DataFrame列名空格?解决NameError报错问题

问题描述

我尝试去除DataFrame列名中的空格,示例代码如下:

my_df=pd.DataFrame({'  name_1':[1, 2],'  name_2':[3, 4],}) 

经过调研后,我尝试了以下代码:

my_df.columns.map(lstrip())
df.columns.to_series().map(lstrip)

但均报错:

NameError: name 'lstrip' is not defined

然而字符串的mystr.lstrip()可以正常运行。请问如何避免该错误?错误原因是什么?


错误原因
  • lstrip()是字符串实例的方法,只能通过具体的字符串对象调用(比如' abc'.lstrip()),它并不是一个可以直接调用的独立全局函数。直接写lstrip或lstrip()会被Python识别为未定义的名称,触发NameError。
  • map()方法需要传入一个可调用对象(比如函数、lambda表达式),你传入的lstrip()是试图调用不存在的函数,lstrip则是引用不存在的名称,自然会报错。
解决方法

以下几种方式都可以实现去除列名前导空格的需求:

方法1:用str.lstrip作为可调用对象传递给map

str.lstrip是字符串类的方法,可以直接作为函数作用于每个列名字符串:

my_df.columns = my_df.columns.map(str.lstrip)

方法2:通过lambda表达式调用lstrip

用lambda表达式对每个列名字符串单独调用lstrip():

my_df.columns = my_df.columns.map(lambda x: x.lstrip())

方法3:使用rename方法批量修改

如果需要更直观的列名修改逻辑,也可以用rename方法:

my_df = my_df.rename(columns=lambda x: x.lstrip())

扩展:去除列名所有前后空格

如果需要同时清理列名的前导和尾随空格,把lstrip换成strip即可:

my_df.columns = my_df.columns.map(str.strip)

内容的提问来源于stack exchange,提问作者Abijah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 17:46:08