Pandas系列到numpy阵列的转换

2024-04-19 23:01:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我和福尔有一个熊猫系列。value_counts输出():

NaN     2741
 197    1891
 127     188
 194      42
 195      24
 122      21

当我在这个系列中执行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, dtype: float64

但是,如果我试图找到最小值和最大值,我会得到nan作为答案:

numpy.min(df[col_name].values)
nan

另外,当我尝试将它转换为numpy数组时,我得到的数组似乎只有nan's

numpy.array(df[col_name])

对熊猫系列成功转换为numpy阵列的建议


Tags: namenumpydfvaluecountcol数组nan
2条回答

从pandas的v 0.24.0开始-您可以使用.array.to_numpy访问pandas系列的备份数组

pandas 0.24.x release notes 引号:“Series.array和Index.array已添加,用于提取支持序列或索引的数组。。。我们没有删除或弃用Series.values或DataFrame.values,但我们强烈建议使用.array或.to numpy()

。。。当您需要序列中存储的数据数组时,我们建议使用Series.array,和Series.to_numpy()当您知道您需要numpy数组时。

函数^{}和方法np.ndarray.min对于任何包含一个或多个NaN值的数组都将始终返回NaN(这是标准的IEE754浮点行为)。

您可以使用^{},它在计算最小值时忽略NaN值,例如:

np.nanmin(df[col_name].values)

更简单的选择是使用^{}方法,它已经忽略了NaN值,即:

df[col_name].min()

我不知道为什么numpy.array(df[col_name])会返回一个只包含nan的数组,除非df[col_name]开始时已经只包含nan。我想这一定是由于你的代码中的其他错误。

相关问题 更多 >