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

在Pandas DataFrame中处理字符串:将元素内空格替换为下划线

问题描述

我的Pandas DataFrame(df_final)的newa_1列中,索引为8395389的元素值如下:

df_final['newa_1'][8395389]
"['Y02T  10/70' 'Y02E  60/00' 'Y02T  90/16' 'Y04S  10/126' 'Y02T  10/7072' 'Y02T  90/12' 'Y02T   90/14']"

需要将每个单引号包裹的元素中任意数量的空格替换为下划线,得到如下结果:

"['Y02T_10/70' 'Y02E_60/00' 'Y02T_90/16' 'Y04S_10/126' 'Y02T_10/7072' 'Y02T_90/12' 'Y02T_90/14']"
解决方案

使用正则表达式精准匹配单引号内的空格并替换,具体实现如下:

单个元素处理

import re

# 获取目标元素
target_val = df_final['newa_1'][8395389]
# 替换单引号内的任意数量空格为下划线
processed_val = re.sub(r"(?<=')[^']*\s+(?=[^']*')", lambda match: match.group().replace(' ', '_'), target_val)
# 写回原DataFrame
df_final.loc[8395389, 'newa_1'] = processed_val

整列批量处理

如果需要对整个newa_1列执行相同操作,用apply方法批量处理:

import re

df_final['newa_1'] = df_final['newa_1'].apply(
    lambda x: re.sub(r"(?<=')[^']*\s+(?=[^']*')", lambda match: match.group().replace(' ', '_'), x)
)

正则说明

(?<=')[^']*\s+(?=[^']*') 用于定位单引号内部的连续空格:

  • (?<='):正向预查,确保匹配内容前有单引号
  • [^']*\s+:匹配非单引号字符后接至少一个空格
  • (?=[^']*'):正向预查,确保匹配内容后有单引号

这样就能只替换每个单引号包裹元素里的空格,不会改动元素之间的分隔空格。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 08:40:31