pandas计算列表列行最大值报max()空序列ValueError如何解决
问题原因
你调用的df['mapped value'].max()是pandas Series的全局聚合方法,作用是对整列的所有元素做比较返回最大值,不会逐行遍历列表计算内部元素的最大值。报错的直接原因是你的mapped value列中存在空列表,Python内置max函数传入空序列时就会抛出ValueError: max() arg is an empty sequence。
解决方案
使用Series的apply()方法逐行处理每个列表元素,同时增加空列表判断避免报错:
import numpy as np # 定义逐行计算逻辑:空列表返回空值,非空列表返回列表内最大值 def calc_list_max(item): return max(item) if item else np.nan df['new column'] = df['mapped value'].apply(calc_list_max)
如果你确认mapped value列不存在空列表,也可以直接简写为df['new column'] = df['mapped value'].apply(max)。
效果验证
针对你给出的示例数据,运行后输出完全符合预期:
- 列表
[1,2,3,4]对应新列值为4 - 列表
[1,2,3,4,5]对应新列值为5 - 列表
[1,2]对应新列值为2
内容的提问来源于stack exchange,提问作者Noob Coder
相关产品推荐
相关产品推荐

