在 Pandas agg 函数中跳过 Mean 函数中的 NA

数据挖掘 Python 熊猫
2022-03-03 14:00:45

这是我的工作代码:

new_df = old_df.groupby('store', as_index = False).agg({'reviewScore': 'mean'})

我想为 mean 函数添加一个参数:skipna=True

我无法弄清楚实现它的语法。

我需要学习如何使用 lambda 函数吗?

2个回答

NaN值会自动跳过。例如,如果我们有下表:

  store  reviewScore
0     a          4.0
1     b          3.0
2     a          3.0
3     a          NaN
4     b          5.0

groupbymean为每个组找到:

df.groupby('store', as_index = False).agg({'reviewScore': 'mean'})

相当于:

df.groupby('store', as_index = False).mean()

输出:

  store  reviewScore
0     a          3.5
1     b          4.0

要在聚合函数中使用参数,您可以使用lambda函数:

df.groupby('store', as_index = False).agg({'reviewScore': lambda x: x.mean(skipna=True)})

或者

df.groupby('store', as_index = False).agg(lambda x: x.mean(skipna=True))

结果应该是一样的。

内部mean()函数将忽略 NaN 值。

获得 NaN 的唯一情况是 NaN 是唯一值。然后,空集的平均值给出 NaN。

聚合函数agg的工作方式与mean().