【发布时间】:2015-12-01 02:19:19
【问题描述】:
我有一个带有 foll 的熊猫系列。 value_counts输出():
NaN 2741
197 1891
127 188
194 42
195 24
122 21
当我对这个系列执行 describe() 时,我得到:
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 数组的任何建议
【问题讨论】:
-
df[col_name].values将返回 numpy 数组。如果数据中有 NaN,它将使用 numpy.min 函数传播。这意味着如果存在 NaN,np.min 将始终将 NaN 作为分析器产生。试试南民docs.scipy.org/doc/numpy/reference/generated/… -
任何包含
nan的数组的min也是nan。要忽略nan值,请尝试np.nanmin(df[col_name].values)(或只是df[col_name].min())。 -
谢谢,但我也得到了一个 nan:numpy.array(df[col_name]).min()
-
问题是你在调用
min()方法之前将它转换为一个 numpy 数组。pandas.Series.min()等效于np.nanmin并忽略 nan 值,而numpy.ndarray.min等效于np.min并将为包含一个或多个nans 的数组返回nan。 -
@user308827 - 从 pandas 的 0.24.0 开始 - 您可以使用
.array和.to_numpy访问 pandas Series 的支持数组 - 请在下面找到更新的答案。 pandas 0.24.x release notes