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

如何用Python pandas从DataFrame字符串列提取最大数字生成新列

解决方法

原代码使用str.extract()仅会返回每行第一个匹配的数字,要实现取最大值需求,需要先提取每行所有数字,再转换为数值类型后取最大值。

修改后的完整代码如下:

import pandas as pd

data = [['tom 11 abc 100', 10], ['nick12 text 1 1000', 15], ['juli078 aq 199 299', 14]]
df = pd.DataFrame(data, columns = ['col1', 'col2'])

# 核心修改逻辑
df["Number"] = df['col1'].str.findall(r'(\d+(?:\.\d+)?)').apply(lambda x: max(map(int, x)) if x else pd.NA)

print(df)

逻辑说明

  • str.findall(r'(\d+(?:\.\d+)?)'):匹配每行字符串中所有符合规则的数字序列,返回列表格式的结果
  • apply(lambda x: max(map(int, x)) if x else pd.NA):对每行的数字列表,先将所有字符串数字转为整数,再取最大值;如果该行没有匹配到数字则返回空值避免报错

如果需要支持提取浮点数字,把map(int, x)改为map(float, x)即可。

运行后输出结果和预期一致:

col1  col2  Number
0       tom 11 abc 100    10     100
1   nick12 text 1 1000    15    1000
2  juli078 aq 199 299    14     299

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 20:06:07