You need to enable JavaScript to run this app. Pandas基于跨列过滤从DataFrame目标列提取文本生成新列
优惠活动
大模型
产品
解决方案
定价
更多

Pandas基于跨列过滤从DataFrame目标列提取文本生成新列

Pandas 跨列约束派生列提取实现

核心实现逻辑统一为两步:

  1. 初始化目标派生列my_new_col全值为None,覆盖所有不满足要求的场景
  2. 通过布尔掩码锁定仅State列为Idaho的行范围,在该范围内对Text列执行指定的文本/正则匹配提取,匹配失败的行自动保留初始的None值

场景1:固定关键词提取

实现代码

import pandas as pd

# 构造示例输入DataFrame
df = pd.DataFrame({
    'State': ["Idaho", "Washington", "Oregon", "Idaho", "Oregon"],
    'Text': ["Lime Light", "New Egg", "Lime Inc", "Monteray", "NovaDing"]
})

# 1. 初始化派生列
df['my_new_col'] = None
# 2. 生成跨列过滤掩码:仅保留State为Idaho的行
state_mask = df['State'].eq('Idaho')
# 3. 在掩码范围内,提取Text中匹配的固定关键词Lime
df.loc[state_mask, 'my_new_col'] = df.loc[state_mask, 'Text'].str.extract(
    pat=r'(Lime)',  # 捕获组包裹目标关键词,直接返回匹配值
    expand=False
)

运行结果

State       Text    my_new_col
0   Idaho       Lime Light    Lime
1   Washington  New Egg       None
2   Oregon      Lime Inc      None
3   Idaho       Monteray      None
4   Oregon      NovaDing      None

注意:俄勒冈州行的Text虽然包含Lime,但因为不满足State=Idaho的前置条件,不会被提取,完全匹配需求。


场景2:正则规则匹配提取

实现代码

和场景1的逻辑完全一致,仅需要替换正则匹配规则即可:

import pandas as pd

# 构造示例输入DataFrame
df = pd.DataFrame({
    'State': ["Idaho", "Washington", "Oregon", "Idaho", "Oregon"],
    'Text': ["1,234 Light", "New Egg", "Lime Inc", "1223 Ring", "NovaDing"]
})

# 1. 初始化派生列
df['my_new_col'] = None
# 2. 生成跨列过滤掩码
state_mask = df['State'].eq('Idaho')
# 3. 在掩码范围内,匹配正则规则对应的内容
df.loc[state_mask, 'my_new_col'] = df.loc[state_mask, 'Text'].str.extract(
    pat=r'(\d,\d\d\d)',  # 替换为目标正则表达式,捕获组包裹匹配模式
    expand=False
)

运行结果

State       Text          my_new_col
0   Idaho       1,234 Light   1,234
1   Washington  New Egg       None
2   Oregon      Lime Inc      None
3   Idaho       1223 Ring     None
4   Oregon      NovaDing      None

注意:索引为3的行虽然State为Idaho,但Text内容没有符合正则规则的“数字,三位数字”格式,因此匹配失败保留None值,和预期一致。


实现优势

  • 全程使用Pandas向量化操作,没有逐行循环,处理大规模数据时运行效率远高于apply循环
  • 跨列约束通过独立的布尔掩码实现,后续扩展过滤条件(比如增加State=Idaho且Text长度大于10的规则)时,只需要修改掩码表达式,不需要改动提取逻辑
  • 提取逻辑和过滤逻辑完全解耦,后续调整匹配规则时不会影响前置约束的执行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.05 03:45:10