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

Pandas DataFrame列中字符串分隔数值列表求最大值异常问题

问题根源

你拆分得到的列表里所有元素都是字符串类型,Python对字符串的大小比较是按字符的ASCII编码逐位比对的:
比如字符串'10'和'3'比较时,会先比对第一位字符'1'和'3',因为'1'的ASCII码小于'3',所以系统会判定'10' < '3',也就得到了错误的最大值。


解决方案

方案1:修改现有循环逻辑

在取最大值前先把列表中所有元素转换为整数类型:

maxlist=[]
for x in df['audience_max'].str.split(','):
    # 先转整数再求最大值
    max_num = max(map(int, x))
    maxlist.append(max_num)
    
df['max_age'] = maxlist

方案2:更简洁的Pandas向量化写法

无需写显式循环,处理大数据量时性能更高:

df['max_age'] = df['audience_max'].str.split(',').apply(lambda x: max(map(int, x)))

运行后得到的max_age列会输出正确结果:

0    10
1     4
2     4
3    10
4     3
5     4
6     4
7     4
8    12
9    10
Name: max_age, dtype: int64

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 04:45:04