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

基于Pandas提取多组数字的最小4位前缀并生成目标DataFrame

Pandas字符串拆分与前缀提取实现

原始数据

import pandas as pd

data = {
'number': ['9020442,9028581132,9503312,78', '3553023,3553024,3553025,355,858000'],
'operator': ['zone 1', 'zone 2']
}
df = pd.DataFrame(data)

需求说明

拆分每行number字段中的逗号分隔数字串,对每个数字执行规则处理:

  • 数字长度≥4时,提取前4位作为前缀
  • 数字长度<4时,直接保留原数字
    最后将处理后的数字重新用逗号拼接,得到目标格式的DataFrame。

实现代码

def process_numbers(num_str):
    # 拆分字符串为单个数字列表
    nums = num_str.split(',')
    # 按规则处理每个数字
    processed = [num[:4] if len(num) >= 4 else num for num in nums]
    # 去重并保持原始顺序
    unique_processed = list(dict.fromkeys(processed))
    # 重新拼接为字符串
    return ','.join(unique_processed)

# 应用处理函数到number列
df['number'] = df['number'].apply(process_numbers)
print(df)

代码解释

  1. process_numbers函数:
    • 用split(',')拆分逗号分隔的数字串,得到单个数字的列表
    • 通过列表推导式遍历每个数字,根据长度判断提取前缀或保留原内容
    • 用dict.fromkeys()实现有序去重,解决示例中重复前缀的合并需求
    • 最后用','.join()将处理后的数字重新拼接为字符串
  2. apply方法:将处理函数批量应用到number列的每一行,替换原列内容

运行结果

number operator
0  9020,9028,9503,78  zone 1
1      3553,355,8580  zone 2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 13:52:10