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

如何在Pandas DataFrame中按列序拼接两列并保留纯数字字符

Pandas 按列顺序拼接并提取纯数字解决方案

解决思路

核心完成两个操作:

  • 从id_part1和id_part2中提取所有纯数字字符,过滤非数字内容
  • 按原列顺序拼接处理后的两列数据,空值/无数字的列不影响最终拼接结果

实现代码

先导入所需库:

import pandas as pd
import re

定义提取纯数字的工具函数:

def extract_digits(x):
    # 统一转为字符串,兼容数字、空值等多种输入类型
    str_x = str(x)
    # 匹配所有数字字符并拼接成纯数字字符串
    return ''.join(re.findall(r'\d', str_x))

处理示例DataFrame:

# 示例DataFrame
df = pd.DataFrame(data = {
    'id_part1': ['1221002', 'Johny Cash', '2-12-0032', 2112],
    'id_part2': ['', '345000223', '', 4322],
    'created_date': ['2019-01-01', '15/02/2016', '2013-05-07', '2020-08-29']
})

# 对两列分别提取纯数字
df['id_part1_clean'] = df['id_part1'].apply(extract_digits)
df['id_part2_clean'] = df['id_part2'].apply(extract_digits)

# 按原列顺序拼接处理后的结果
df['full_id'] = df['id_part1_clean'] + df['id_part2_clean']

# 生成最终结果DataFrame
result_df = df[['full_id', 'created_date']]

最终结果

执行代码后,result_df内容如下:

full_idcreated_date
12210022019-01-01
34500022315/02/2016
21200322013-05-07
211243222020-08-29

关键细节说明

  • 类型兼容:先将输入转为字符串,确保整数、空字符串等不同类型的输入都能被正确处理
  • 纯数字提取:用正则r'\d'匹配所有数字字符,通过join拼接成完整的数字字符串
  • 拼接逻辑:空字符串与其他字符串拼接时会自动忽略,因此某列无数字/为空时,直接保留另一列的处理结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 07:07:39