You need to enable JavaScript to run this app. 如何将pandas DataFrame中包含指定字符模式的字符串替换为None
优惠活动
大模型
产品
解决方案
定价
更多

如何将pandas DataFrame中包含指定字符模式的字符串替换为None

pandas实现方案

首先给出完整可运行的代码,包含测试数据构造、转换逻辑、结果验证三个部分:

1. 导入依赖并构造测试数据集

import pandas as pd

# 构造和你示例一致的原始数据集
df = pd.DataFrame(
    data=[
        ["transport", "aa", "uu"],
        ["industry)", "bb", "tt"],
        ["aviation)", "cc", "tt"]
    ],
    columns=["departments", "var1", "var1.1"]
)
# 重命名列名匹配你预期的输出
df.rename(columns={"var1.1": "var2"}, inplace=True)

2. 核心转换逻辑

你提供的Spark代码逻辑是:departments列匹配包含)的正则时返回None,否则返回原值,对应pandas有两种实现方式:

写法1:和Spark逻辑完全对齐的where实现

df["departments"] = df["departments"].where(
    # 不匹配正则的行保留原值,对应Spark的otherwise逻辑
    ~df["departments"].str.contains(r"\)", na=False),
    # 匹配正则的行替换为None,对应Spark的when满足条件返回None的逻辑
    None
)

写法2:更简洁的mask实现

# mask方法会在条件为真时替换对应值,更符合需求的直观表达
df["departments"] = df["departments"].mask(
    df["departments"].str.contains(r"\)", na=False),
    None
)

3. 结果验证

执行print(df)后即可得到你预期的输出:

departments var1 var2
0   transport   aa   uu
1        None   bb   tt
2        None   cc   tt

注意:参数na=False是为了避免departments列存在空值时判断逻辑报错,如果你能保证该列没有空值,可以省略该参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 05:15:04