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

如何计算pandas DataFrame单元格中numpy数组的逐元素均值(忽略NaN)

解决DataFrame单元格中numpy数组的逐元素忽略NaN均值计算问题

我完全懂你的困扰——当DataFrame单元格里存着numpy数组,且其中包含NaN时,直接用np.nanmean(df[0])会得到完全离谱的结果,这确实挺闹心的。

问题根源

之所以出现错误结果,是因为np.nanmean处理包含数组的pandas Series时,并没有按我们预期的逻辑把数组们堆叠起来再计算逐元素均值。它会把Series当成一维元素集合来处理,而非将每个数组的对应位置元素归组计算。

可行解决方案

我们需要先把Series里的所有numpy数组堆叠成一个三维数组,再沿着存储单个数组的轴(也就是第一个轴,索引为0)计算忽略NaN的均值:

import numpy as np
import pandas as pd

# 构造带NaN的示例数据
a0 = np.array([[1, 2], [2, np.nan]])
a1 = np.array([[3, 2], [1, 1]])
df = pd.DataFrame([[a0], [a1]])

# 先堆叠数组,再计算逐元素nanmean
stacked_arrays = np.stack(df[0].values)
result = np.nanmean(stacked_arrays, axis=0)

print(result)

运行后会得到符合预期的结果:

array([[ 2. ,  2. ],
       [ 1.5,  1. ]])

额外说明

如果你的DataFrame有更多行(也就是更多numpy数组),这个方法同样适用——np.stack会把所有数组统一堆叠成三维数组,axis=0参数指定沿着原行方向计算均值,每个位置的元素都会自动忽略NaN后取平均。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:21:06