我一直在写一个脚本,可以从Python中的一个大型数据集中获取min,max,mean等(由于与工作相关,无法共享代码)。我注意到在一个pandas Dataframe (600列x10行)上运行np.mean,它会正确地返回一个平均值。然而,当在大规模数据集(600列x 20000行)上运行它时,它总是返回0.0作为数据集的最小值,最大值和平均值。我是否错过了NumPy中常见的一些明显的东西?Thanks:)期望最小值、最大值和平均值结果,使用np.mean等没有收到任何结果。
jaql4c8m1#
我找到了一个解决方案-正如怀疑的那样,这是由于源数据中的NULL/NaN值:所以我改了:df1.apply(lambda col: np.nanmean(df1[col.name] - df2[col.name])).replace(0, np.nan).abs()到df1.apply(lambda col: np.nanmean(df1[col.name].replace(np.nan, 0) - df2[col.name].replace(np.nan, 0))).replace(0, np.nan).abs()
df1.apply(lambda col: np.nanmean(df1[col.name] - df2[col.name])).replace(0, np.nan).abs()
df1.apply(lambda col: np.nanmean(df1[col.name].replace(np.nan, 0) - df2[col.name].replace(np.nan, 0))).replace(0, np.nan).abs()
1条答案
按热度按时间jaql4c8m1#
我找到了一个解决方案-正如怀疑的那样,这是由于源数据中的NULL/NaN值:
所以我改了:
df1.apply(lambda col: np.nanmean(df1[col.name] - df2[col.name])).replace(0, np.nan).abs()
到
df1.apply(lambda col: np.nanmean(df1[col.name].replace(np.nan, 0) - df2[col.name].replace(np.nan, 0))).replace(0, np.nan).abs()