Pandas中如何按指定列特定范围筛选后计算其他列均值
解答
完全可以先对单列做筛选,再基于筛选后的子集计算其他列的均值,这是pandas数据处理的常规操作。
你原有代码的逻辑是按popularity列的每一个唯一值拆分全量数据做均值计算,所以会返回0-97所有取值对应的分组结果,和你只需要popularity > 95范围数据的需求不匹配,根据实际诉求选对应写法即可:
- 不需要分组,要所有
popularity>95样本的其他列整体均值:
# 先做行筛选,再计算各数值列均值 means = df[df['popularity'] > 95].mean(numeric_only=True)
- 需要在
popularity>95的范围内,按popularity的具体取值(即96、97两个值)分组计算各组均值:
# 先筛出符合阈值的子集,再执行分组计算 means = df[df['popularity'] > 95].groupby('popularity').mean(numeric_only=True)
补充说明:先筛选再计算的逻辑,不会对0-95区间的无效数据做额外计算,比先全量分组再过滤结果的运行效率更高。
内容的提问来源于stack exchange,提问作者heisenberg
相关产品推荐
相关产品推荐

