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

Pandas中如何将列表类型的数组列转换为浮点型数组并计算均值

错误原因

你执行的grouped_reps["util_rate"] = grouped_reps["util_rate"].astype(str).astype(float)报错的核心原因是:astype(str)会将列中的每个列表对象序列化为包含括号、逗号的完整字符串(比如[1.0, 0.75, 0.9]这个整体变成字符串),这类字符串不符合浮点型的格式要求,所以无法直接转换为float类型。

解决方法

分两种场景处理:

场景1:util_rate列本身存储的是Python列表对象(和你示例构造的DataFrame结构一致)

不需要额外做类型转换,直接对每一行的列表计算均值即可,两种实现可选:

  • 依赖numpy实现:
import numpy as np

grouped_reps['avg_util'] = grouped_reps['util_rate'].apply(np.mean)
  • 原生Python实现,无需额外依赖:
grouped_reps['avg_util'] = grouped_reps['util_rate'].apply(lambda x: sum(x)/len(x))

场景2:util_rate列是字符串格式的列表(比如从csv/文本文件读取后得到的格式)

需要先将字符串反序列化为Python列表,再计算均值:

from ast import literal_eval

# 先把字符串列表转为真实列表
grouped_reps['util_rate'] = grouped_reps['util_rate'].apply(literal_eval)
# 再计算均值
grouped_reps['avg_util'] = grouped_reps['util_rate'].apply(lambda x: sum(x)/len(x))

执行完成后你将得到avg_util新列,存储每个姓名对应的数组均值,示例输出如下:

A                util_rate  avg_util
0  John        [1.0, 0.75, 0.9]  0.883333
1  Mary        [1.0, 0.8, 0.87]  0.890000
2   Tom  [0.74, 0.34, 0.9, 0.45]  0.607500

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 04:36:02