Python 熊猫系列到numpy阵列转换错误
我和福勒有一个熊猫系列<代码>值\u计数输出() 在本系列中执行descripe()时,我得到:Python 熊猫系列到numpy阵列转换错误,python,numpy,pandas,Python,Numpy,Pandas,我和福勒有一个熊猫系列值\u计数输出() 在本系列中执行descripe()时,我得到: df[col_name].describe() count 2738.000000 mean 172.182250 std 47.387496 min 0.000000 25% 171.250000 50% 197.000000 75% 197.000000 max 197.000000 Name: SS_D_1,
df[col_name].describe()
count 2738.000000
mean 172.182250
std 47.387496
min 0.000000
25% 171.250000
50% 197.000000
75% 197.000000
max 197.000000
Name: SS_D_1, dtype: float64
但是,如果我试图找到最小值和最大值,我会得到nan作为答案:
numpy.min(df[col_name].values)
nan
另外,当我尝试将它转换为numpy数组时,我似乎得到了一个只有nan的数组
numpy.array(df[col_name])
任何关于如何成功地从pandas系列转换为numpy数组的建议函数和方法np.ndarray.min
都将始终为包含一个或多个NaN值的任何数组返回NaN(这是标准的IEE754浮点行为)
您可以使用,它在计算最小值时忽略NaN值,例如:
np.nanmin(df[col_name].values)
更简单的选择是只使用该方法,该方法已忽略NaN值,即:
df[col_name].min()
我不知道为什么
numpy.array(df[col\u name])
会返回一个只包含nan的数组,除非df[col\u name]
一开始就只包含nan。我想这一定是由于代码中的其他错误造成的。从pandas的V0.24.0开始-您可以使用.array
和访问pandas系列的备份数组
Quote:“Series.array和Index.array已添加用于提取支持序列或索引的数组…我们没有删除或弃用Series.values或DataFrame.values,但我们强烈建议使用.array或.to_numpy()
…当您需要存储在系列、和系列中的数据数组时,建议使用Series.array。当您知道需要numpy数组时,建议使用to_numpy()。“df[col\u name]。值将返回numpy数组。如果数据中有NaN,则使用numpy.min函数进行传播。这意味着如果存在NaN,np.min将始终生成NaN作为anser。尝试nanmin任何包含nan
的数组的min
也是nan
。要忽略nan
值,请尝试np.nanmin(df[col\u name].values)
(或者只需df[col\u name].min()
)。谢谢,但我也得到了一个nan:numpy.array(df[col\u name])。min()问题是,在调用min()
方法之前,您要将其强制转换为numpy数组pandas.Series.min()
执行与np.nanmin
等效的操作并忽略nan值,鉴于numpy.ndarray.min
相当于np.min
,对于包含一个或多个nan
s的数组,它将返回nan
。@user308827-从pandas'0.24.0开始-您可以使用.array
和访问pandas系列的备份数组。要查找更新的答案,请访问吼叫。
df[col_name].min()