如何按条件替换pandas number列首个为0的字符为+233
解决方案
核心思路
由于number列已经是字符串类型,仅需要匹配列值开头的第一个0,将其替换为+233即可,非0开头的内容不会被修改。
实现方法
方法1:正则替换(最简洁)
用正则定位符匹配字符串开头的0,一行代码完成处理:
# ^为正则定位符,仅匹配字符串开头的第一个0 df['number'] = df['number'].str.replace(r'^0', '+233', regex=True)
方法2:条件判断(可读性更高)
先筛选出首字符为0的行,再做字符串拼接,逻辑更直观,后续调整规则更方便:
# 筛选首字符为0的行 mask = df['number'].str.startswith('0') # 去掉首字符0后在头部拼接+233 df.loc[mask, 'number'] = '+233' + df.loc[mask, 'number'].str[1:]
测试验证
修正后的可运行示例代码如下(原示例存在字符串未加引号、0开头整数语法非法的问题):
import pandas as pd # 构造示例DataFrame,所有值均为字符串类型 df = pd.DataFrame([["ken", "080222333222"], ["ben", "+233948433"], ["Paul", "0800000073"]], columns=['name', 'number']) # 执行替换操作 df['number'] = df['number'].str.replace(r'^0', '+233', regex=True) print(df)
运行后输出结果:
name number 0 ken +23380222333222 1 ben +233948433 2 Paul +233800000073
完全符合需求中Paul行的处理效果。
内容的提问来源于stack exchange,提问作者akinbode
相关产品推荐
相关产品推荐

