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

如何用Lambda函数处理Pandas含列表值的列并提取末尾数字

解决方案

要从sprintlist列的每个列表元素中提取末尾数字并生成新的列表列Sprintnumb,可以使用Python的re正则表达式模块配合apply方法实现,具体代码如下:

import pandas as pd
import re

mydata = {"Key" : [567, 568, 569, 570, 571, 572] , "Sprint" : ["Max1;Max2", "Max2", "DI001 2", "DI001 25", "DAS 100" , "DI001 101"]}
df = pd.DataFrame(mydata)
df["sprintlist"] = df["Sprint"].str.split(";")

# 定义提取函数
def get_trailing_numbers(sprint_items):
    return [int(re.search(r'(\d+)$', item).group(1)) for item in sprint_items]

# 生成新列
df["Sprintnumb"] = df["sprintlist"].apply(get_trailing_numbers)

print(df)

错误原因说明

你之前尝试用Lambda函数时出现"str' object has no attribute 'str'"错误,是因为sprintlist中的每个元素是原生Python字符串,而非Pandas的Series对象,因此不能使用Pandas专属的.str方法。改用Python标准库的re模块直接处理字符串即可解决问题。

输出结果

执行上述代码后,Sprintnumb列会生成预期的整数列表:

KeySprintsprintlistSprintnumb
567Max1;Max2['Max1', 'Max2'][1, 2]
568Max2['Max2'][2]
569DI001 2['DI001 2'][2]
570DI001 25['DI001 25'][25]
571DAS 100['DAS 100'][100]
572DI001 101['DI001 101'][101]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 09:07:17