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

如何用Pandas为以.xx0结尾的DataFrame列值添加'M'前缀

高效实现Pandas中指定格式字符串的前缀添加

核心思路

用Pandas的矢量化字符串操作替代循环,这类操作基于底层优化,效率远高于Python级别的循环。需要先确保Number列为字符串类型(数值类型会自动省略末尾的0,无法匹配目标格式),再通过正则匹配筛选目标行并添加前缀。

步骤与代码

  1. 确保列类型为字符串(如果当前是数值类型):
df['Number'] = df['Number'].astype(str)
  1. 方法1:使用str.replace直接替换
    通过正则匹配符合「含小数点且末尾为0」的整串,将其替换为M+原字符串:
df['Number'] = df['Number'].str.replace(r'^(\d+\.\d*0)$', r'M\1', regex=True)
  • 正则说明:^(\d+\.\d*0)$ 匹配以数字开头、包含小数点、且最后一位为0的完整字符串;\1表示引用匹配到的原字符串内容。
  1. 方法2:使用np.where条件赋值
    更直观的条件判断方式,先筛选符合规则的行,再针对性添加前缀:
import numpy as np
df['Number'] = np.where(
    df['Number'].str.match(r'^\d+\.\d*0$'),
    'M' + df['Number'],
    df['Number']
)

测试示例

import pandas as pd
import numpy as np

# 构造测试数据
data = {'Number': ['1203.10', '4221', '3452.11', '678.0', '901.20']}
df = pd.DataFrame(data)

# 执行处理(以方法2为例)
df['Number'] = np.where(df['Number'].str.match(r'^\d+\.\d*0$'), 'M' + df['Number'], df['Number'])

print(df)

输出结果:

Number
0  M1203.10
1      4221
2    3452.11
3      M678.0
4     M901.20

内容的提问来源于stack exchange,提问作者Sofía Contreras

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 17:46:26