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

如何基于两列交集分离Pandas DataFrame列中的非共同字符?

提取DataFrame两列的非共同后缀字符

这问题我之前也碰到过,完全不用写循环逐字符检查,用Pandas的字符串矢量化操作就能轻松搞定,而且效率还高。

方案一:用str.replace直接替换共同前缀

核心思路是把number列转成字符串,然后将nums列里对应的前缀部分替换为空,剩下的就是你要的额外字符:

import pandas as pd

values = { 'number': [2830, 8457, 9234], 'nums': ['2830S', '8457M', '923442'] }
df = pd.DataFrame(values, columns=['number', 'nums'])

# 第一步:将number列转为字符串类型,和nums列格式统一
df['number_str'] = df['number'].astype(str)
# 第二步:替换掉nums里的共同前缀,得到额外字符
df['extra_chars'] = df['nums'].str.replace(df['number_str'], '', regex=False)

这里一定要加上regex=False参数,避免把数字当成正则表达式的特殊字符处理(虽然这次都是纯数字,但养成好习惯能避免后续踩坑)。运行后df['extra_chars']的结果就是['S', 'M', '42'],完全符合需求。

方案二:利用字符串切片

如果确定额外字符始终在共同部分之后,也可以通过计算共同部分的长度,直接切片提取后缀:

df['extra_chars'] = df.apply(lambda row: row['nums'][len(str(row['number'])):], axis=1)

不过这种方法用了apply,在数据量很大的时候,效率会比第一种矢量化的str.replace低一些,所以更推荐第一种方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 14:33:12