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

如何从两列object类型数据中提取仅含字母数字的值?

解决方案

根据你的数据和期望输出,核心需求是:

  • 提取col1中包含数字的字符串
  • 当col1是纯字母时,若col2包含数字且其字母前缀与col1不一致,提取该col2的字符串

以下是用Python Pandas实现的代码:

1. 准备数据

import pandas as pd

data = {
    'col1': ['AB', 'BC123', 'BG274', 'DC', 'DG156'],
    'col2': ['AB123', 'SG', 'HF', 'DG789', 'HD']
}
df = pd.DataFrame(data)

2. 定义辅助判断函数

# 判断字符串是否为纯字母
def is_all_alpha(s):
    return s.str.match(r'^[A-Za-z]+$').fillna(False)

# 判断字符串是否包含数字
def has_digit(s):
    return s.str.contains(r'\d').fillna(False)

# 提取字符串的开头字母前缀
def get_alpha_prefix(s):
    return s.str.extract(r'^([A-Za-z]+)')[0]

3. 遍历筛选目标值

result = []

for _, row in df.iterrows():
    col1_val = row['col1']
    col2_val = row['col2']
    
    # 如果col1含数字,直接加入结果
    if has_digit(pd.Series([col1_val]))[0]:
        result.append(col1_val)
    else:
        # 如果col2含数字,且前缀和col1不同,加入结果
        if has_digit(pd.Series([col2_val]))[0]:
            col1_prefix = col1_val
            col2_prefix = get_alpha_prefix(pd.Series([col2_val]))[0]
            if col1_prefix != col2_prefix:
                result.append(col2_val)

# 输出最终结果
for item in result:
    print(item)

运行结果

BC123
BG274
DG789
DG156

关键说明

  • 用正则表达式^[A-Za-z]+$匹配纯字母字符串,\d匹配数字
  • 提取字母前缀用于对比,确保只保留前缀与col1不一致的col2含数字条目
  • 遍历每行处理,精准匹配你的期望输出逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 00:45:49