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

如何计算DataFrame中Counts列每行数值序列的均值并新增列?

解决DataFrame中每行数值序列的均值计算问题

我懂你碰到的麻烦了——当DataFrame的Counts列每个元素都是一组数值(不管是列表还是numpy数组)时,直接用常规的mean()方法根本行不通,因为它默认是对整列做统计,而非每行内部的序列单独计算。下面给你两种最常见场景的解决方案,应该能直接解决你的问题:

场景1:Counts列元素是Python列表

用apply()方法配合lambda函数,对每行的序列单独计算均值就行,还能顺便处理空序列的情况避免报错:

import pandas as pd

# 先给个示例DataFrame方便你对照
df = pd.DataFrame({
    'Event': ['A', 'B', 'C'],
    'Counts': [[1,2,3], [4,5], [6,7,8,9]],
    'Length': [3, 2, 4]
})

# 新增Mean列,计算每行Counts的均值
df['Mean'] = df['Counts'].apply(lambda x: sum(x)/len(x) if x else None)

这里的lambda函数先判断序列是否为空,不为空就用总和除以长度得到均值,为空的话返回None,避免出现除以0的错误。

场景2:Counts列元素是numpy数组

如果你的Counts列存的是numpy数组,用numpy自带的mean方法会更高效:

import pandas as pd
import numpy as np

# 示例DataFrame
df = pd.DataFrame({
    'Event': ['A', 'B', 'C'],
    'Counts': [np.array([1,2,3]), np.array([4,5]), np.array([6,7,8,9])],
    'Length': [3, 2, 4]
})

# 新增Mean列
df['Mean'] = df['Counts'].apply(np.mean)

要是你追求更快的速度,也可以用列表推导式,有时候比apply()的效率更高:

df['Mean'] = [np.mean(arr) for arr in df['Counts']]

额外小提示

如果你的Counts列是从外部导入的字符串形式列表(比如像"[1,2,3]"这样的字符串),那得先把它转换成实际的列表/数组才能计算:

import ast
df['Counts'] = df['Counts'].apply(ast.literal_eval)

处理完之后再用上面的方法计算均值就没问题了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:11:46