如何批量修改Dataframe中包含@字符的单元格内容
实现方案
我们可以通过pandas的字符串匹配方法完成替换,以下是两种常用的可直接运行的实现方式:
方法1:使用loc定位符合条件的单元格赋值
这种方式逻辑清晰,适合需要明确筛选条件的场景:
# 筛选Phone / Mail列中包含@的行,直接替换对应单元格内容 # na=False参数可以避免列中存在空值时抛出报错 df.loc[df['Phone / Mail'].str.contains('@', na=False), 'Phone / Mail'] = 'Please fill in Phone Number'
方法2:使用正则替换
直接通过正则匹配所有含@的字符串完成整值替换,代码更简洁:
# regex=True开启正则匹配,.*@.*表示任意包含@的字符串 df['Phone / Mail'] = df['Phone / Mail'].replace(r'.*@.*', 'Please fill in Phone Number', regex=True)
注意事项
如果你的Phone / Mail列存在非字符串类型的值,建议先转成字符串类型再执行替换,避免匹配失败:
df['Phone / Mail'] = df['Phone / Mail'].astype(str)
完整测试示例
你可以用以下代码验证效果:
import pandas as pd # 构造测试数据 data = { "Name": ["Max", "Celine"], "Phone / Mail": ["0176348334", "celine@mail.com"] } df = pd.DataFrame(data) # 执行替换 df.loc[df['Phone / Mail'].str.contains('@', na=False), 'Phone / Mail'] = 'Please fill in Phone Number' print(df)
运行输出结果和你预期的完全一致。
内容的提问来源于stack exchange,提问作者Justin
相关产品推荐
相关产品推荐

