Python numpy/NaN差异混淆
当我试图在Python numpy/NaN差异混淆,python,pandas,numpy,Python,Pandas,Numpy,当我试图在pandasdataframe的行中查找非nan元素的平均值/和时,遇到了这个问题。看来 df.apply(np.mean, axis=1) 很好 但是,将np.mean应用于包含nan的numpy数组将返回一个nan 这些都是在什么地方指定的吗?我不想在路上被烧掉……numpy的mean函数首先检查其输入是否有mean方法,正如@EdChum在中所解释的那样 使用df.apply时,传递给函数的输入是pandas.Series。因为pandas.Series有一个mean方法,所以
pandas
dataframe的行中查找非nan元素的平均值/和时,遇到了这个问题。看来
df.apply(np.mean, axis=1)
很好
但是,将np.mean
应用于包含nan的numpy
数组将返回一个nan
这些都是在什么地方指定的吗?我不想在路上被烧掉……numpy的mean函数首先检查其输入是否有mean方法,正如@EdChum在中所解释的那样 使用
df.apply
时,传递给函数的输入是pandas.Series。因为pandas.Series有一个mean方法,所以numpy使用该方法而不是使用自己的函数。默认情况下,pandas.Series.mean忽略NaN
您可以通过“值”属性访问基础numpy数组,并将其传递给函数:
df.apply(lambda x: np.mean(x.values), axis=1)
这将使用numpy的版本。numpy的mean函数首先检查其输入是否有mean方法,如@EdChum在中所述 使用
df.apply
时,传递给函数的输入是pandas.Series。因为pandas.Series有一个mean方法,所以numpy使用该方法而不是使用自己的函数。默认情况下,pandas.Series.mean忽略NaN
您可以通过“值”属性访问基础numpy数组,并将其传递给函数:
df.apply(lambda x: np.mean(x.values), axis=1)
这将使用numpy的版本。Divakar正确地建议使用np.nanmean
如果我可以回答这个问题的话,语义是不同的,因为Divakar正确地建议使用np.nanmean
如果我可以回答这个问题的话,它的语义是不同的,因为当@Divakar用
np.nanmean
保存你自己时,它对np.sum
,np.std
和其他的做了同样的工作,但问题依然存在:pandas
和numpy
中的语义为何不同(考虑到pandas
中使用的函数是np.mean
)。我认为pandas中使用的函数应该是nanmean,但是我们需要验证这一点。用np.nanmean
@Divakar对np.sum
、np.std
等做同样的工作?@Divakar我知道答案是肯定的,但问题仍然存在:为什么pandas
和numpy
的语义不同(假设pandas中使用的函数是np.mean
)。我认为pandas中使用的函数是nanmean,但我们需要验证这一点。