求DataFrame数组元素列的最值时遇报错,如何修复?
问题修复方案
错误原因
你报错的核心问题是覆盖了numpy的内置函数:
- 代码里写了
np.max=np.max(df['color'].iloc[id]),这会把numpy的np.max函数替换成一个float32数值,后续再调用np.max时,就变成调用一个数值对象,自然会抛出'numpy.float32' object is not callable的错误。 - 另外存在笔误:
np.min_=min(df['color'].iloc[id])这里应该给你自定义的变量min_赋值,而非np.min_。 - 第一行的
error min_=100是无效代码,需要删除。
修复后的代码(保留原循环逻辑)
import numpy as np # 初始化自定义的最大最小值变量 min_ = 100 max_ = -100 for idx in range(len(df)): current_min = np.min(df['color'].iloc[idx]) current_max = np.max(df['color'].iloc[idx]) if current_min < min_: min_ = current_min if current_max > max_: max_ = current_max
更高效的优化方案(无需循环)
循环遍历DataFrame行效率很低,建议直接把所有数组元素展平后一次性计算最大最小值:
import numpy as np # 把color列的所有数组拼接成一个一维数组 all_values = np.concatenate(df['color'].values) min_ = np.min(all_values) max_ = np.max(all_values)
内容的提问来源于stack exchange,提问作者Anthony1199
相关产品推荐
相关产品推荐

