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

Pandas DataFrame转数组后np.min返回NaN的原因咨询

Pandas DataFrame转数组后np.min返回NaN的原因

问题场景

我有一个Pandas DataFrame,想要删除一列后将剩余数据用于统计测试。执行以下代码时:

X = dtf_scaled_train.drop('y_train_scaled', axis=1)

print(np.min(X))

得到各列的最小值:

OverallQual               -2.500000
GrLivArea                 -1.721519
GarageCars                -2.000000
GarageArea                -1.892216
TotalBsmtSF               -1.972084
FullBath                  -2.000000
YearBuilt                 -2.108696
YearRemodAdd              -1.189189
LotFrontage               -2.333333
MSSubClass                -0.600000
MSSubClass_cluster_mean   -1.000000
MSSubClass_cluster_min     0.000000
dtype: float64

这符合预期,但将其转为数组后调用np.min:

X = dtf_scaled_train.drop('y_train_scaled', axis=1).values

print(np.min(X))

却返回:

nan

原因分析

  • 核心原因是你的DataFrame中存在缺失值(NaN)。
  • 直接对Pandas DataFrame调用np.min()时,Pandas会自动忽略各列的NaN值,计算每列的最小值;但将DataFrame转为NumPy数组后,np.min()默认不会跳过NaN,只要数组中存在一个NaN,就会直接返回NaN。
  • 解决方法:
    • 转数组后调用np.min(X, skipna=True),指定跳过NaN值计算全局最小值;
    • 先处理DataFrame中的缺失值(比如用df.fillna()填充合适的值),再转为数组进行计算。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 15:50:26