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

Pandas计算DataFrame行均值与标准差返回NaN问题求助

解决DataFrame每行均值/标准差返回NaN的问题

嘿,我一眼就看出问题出在哪了——你当前的代码是在计算列方向的均值,而不是每行的均值!这就是为什么mean列全是NaN的原因:当你执行df.mean(numeric_only=True)时,默认是按列(axis=0)计算,得到的是每个月份列的均值(一个Series),你把它赋值给整列df['mean'],因为维度不匹配,所以所有行都变成了NaN。

正确的解决方案

要计算每行的均值和标准差,只需要在mean()和std()方法中指定axis=1(行方向计算),同时明确选择需要计算的数值列(避免CellName这类非数值列干扰):

# 计算每行均值
df['mean'] = df.iloc[:, 1:].mean(axis=1, numeric_only=True)

# 计算每行标准差
df['std'] = df.iloc[:, 1:].std(axis=1, numeric_only=True)

关键参数说明

  • axis=1:告诉Pandas沿着行的方向计算(即对每一行的所有数值列求均值/标准差),默认的axis=0是沿着列的方向计算,这是你之前的核心错误。
  • df.iloc[:,1:]:明确选取从第2列开始的所有列(也就是你的四个月份列),虽然numeric_only=True会自动跳过非数值列,但这样写更直观,避免意外引入其他非数值列。

运行后的示例结果

执行上面的代码后,你的DataFrame会更新为:

CellNameApr-2018Feb-2018Jan-2018Mar-2018meanstd
BDG652ML_KPBENDULML19.45084124.11947427.09142617.52700619.5471877.653432
BDG652ML_KPBENDULML215.91755510.54873111.01920814.59238813.0194712.464458
BDG652ML_KPBENDULML324.95736021.12251921.19721624.95054923.0569112.044735

这样就能得到你想要的每行均值和标准差啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:12:10