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

如何在Pandas DataFrame中将所有'+'替换为'.5'?

解决方法

针对你遇到的替换问题,核心是要同时处理**单独的'+'和数字后跟'+'**两种场景,以下是两种可行的实现方式:

方法1:针对指定列批量处理

import pandas as pd

data = {'Name': ['A', 'B', 'C', 'D'],
        'Lower': ['+', '2', '2+', '3'],
        'Upper': ['2','3+','4+','5']}

df = pd.DataFrame(data)

# 遍历需要处理的列(Lower和Upper)
for col in ['Lower', 'Upper']:
    # 使用正则匹配两种场景:单独的'+' 或 数字+'+'
    df[col] = df[col].str.replace(r'(\d)?\+', r'\1.5', regex=True)

print(df)

方法2:全局替换(更简洁)

直接利用df.replace的正则模式,对整个DataFrame中符合规则的内容进行替换:

df = df.replace(r'(\d)?\+', r'\1.5', regex=True)

为什么之前的方法失败?

  • df.replace('+','.5', regex=False):regex=False时,只会匹配**整个单元格完全等于'+'**的内容,因此像2+这种包含'+'但不是整个单元格的内容不会被替换。
  • df['Lower'].str.replace('+', '.5'):str.replace默认启用正则模式,而+是正则元字符(表示匹配前一个字符1次或多次),未转义的话会导致匹配逻辑错误,进而出现异常结果。

执行上述代码后,得到的DataFrame与你的期望输出完全一致:

Name Lower Upper
0    A   .5     2
1    B    2   3.5
2    C  2.5   4.5
3    D    3     5

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 21:55:20