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

如何在Pandas中基于另一列字符串提取目标内容?

提取DataFrame中姓名列的正确实现方法

原始DataFrame

Column AColumn B
JELLY ROSEN 15 JELLY STREET APT 111 JERSEY CITY, NJ15 JELLY STREET APT 111 JERSEY CITY, NJ
ROB ROSEN & STEVEN ROSEN 29 MAIN ST JERSEY CITY, NJ29 MAIN ST JERSEY CITY, NJ

需求说明

需要生成Column C,提取Column A中去掉Column B对应字符串后的姓名部分,结果如下:

Column C
JELLY ROSEN
ROB ROSEN & STEVEN ROSEN

原代码问题

你写的代码仅固定处理第一行数据([0]索引),无法批量应用到所有行,且函数参数与DataFrame调用逻辑不匹配,无法生成整列有效结果。

正确实现方法

方法1:用apply逐行处理

通过apply遍历每行,针对每行的Column A和Column B做字符串截取:

import pandas as pd

# 构造示例DataFrame
df = pd.DataFrame({
    'Column A': [
        'JELLY ROSEN 15 JELLY STREET APT 111 JERSEY CITY, NJ',
        'ROB ROSEN & STEVEN ROSEN 29 MAIN ST JERSEY CITY, NJ'
    ],
    'Column B': [
        '15 JELLY STREET APT 111 JERSEY CITY, NJ',
        '29 MAIN ST JERSEY CITY, NJ'
    ]
})

def extract_name(row):
    # 找到Column B在Column A中的起始位置,截取前半部分并清理首尾空格
    return row['Column A'][:row['Column A'].find(row['Column B'])].strip()

df['Column C'] = df.apply(extract_name, axis=1)

方法2:用str.replace直接替换

由于Column B是Column A的后缀内容,直接替换为空后清理空格,写法更简洁:

df['Column C'] = df.apply(lambda row: row['Column A'].replace(row['Column B'], '').strip(), axis=1)

方法3:向量化处理(大数据量推荐)

避免逐行循环,用向量化方式高效处理,适合Column B严格为Column A后缀的场景:

df['Column C'] = df['Column A'].str[:-df['Column B'].str.len()].str.strip()

运行上述任意代码后,df['Column C']即可得到目标姓名列。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 06:45:51