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

为什么Python的strip方法无法去除Pandas DataFrame列中的前导空格

Pandas 城市名列空白去除失败解决方案

核心原因:str.strip()失效是因为列中的空白不是普通ASCII空格,大概率是全角空格、不间断空格、零宽空格等Unicode类空白字符,旧版本Pandas的默认str.strip()仅处理ASCII空格,无法识别这类字符。


步骤1:确认空白字符类型

先取一条带前置空白的城市名,打印首个字符的Unicode编码确认类型:

# 替换为你查到的带空白的城市名所在行的位置即可
sample_city = df_hotels['city_name'].iloc[问题行索引]
print(f"原始字符串表示:{repr(sample_city)}")
print(f"首个字符Unicode编码:{ord(sample_city[0])}")

常见异常编码对应:

  • 12288:全角空格(\u3000)
  • 160:不间断空格(\u00a0)
  • 8203:零宽空格(\u200b)

步骤2:清除异常空白

方案1:正则一次性清除所有类型前置空白

不管是什么类型的前置空白都可以用该方法匹配清除:

# 仅清左侧空白保留右侧内容,需要前后都清就去掉正则开头的^
df_hotels['city_name'] = df_hotels['city_name'].str.replace(r'^[\s\u3000\u00a0\u200b]+', '', regex=True)

方案2:手动指定strip要清除的字符集合

把第一步查到的异常空白字符补充到待清除集合中,针对性处理:

# 可根据实际查到的编码补充更多字符
strip_chars = ' \t\n\r\u3000\u00a0\u200b'
df_hotels['city_name'] = df_hotels['city_name'].str.lstrip(strip_chars)

方案3:读JSON阶段提前规避

如果是JSON读取时的编码解析导致的异常,读入时就指定编码和列类型:

df_hotels = pd.read_json(
    "你的文件路径.json",
    encoding="utf-8",
    dtype={"city_name": str}
)

步骤3:验证结果

处理完成后重新统计值计数确认问题解决:

print(df_hotels['city_name'].value_counts())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 22:06:05