特定列的 Pandas 均值

新手上路,请多包涵

我有一个像这样的熊猫数据框:

在此处输入图像描述

如果 Cluster==1 或 Cluster==2,我如何计算特定列的平均值(最小值/最大值、中值)?

谢谢!

原文由 Keithx 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 920
2 个回答

您可以使用以下方法创建仅包含相关行的新 df:

 newdf = df[df['cluster'].isin([1,2)]

newdf.mean(axis=1)

为了计算特定列的平均值,您可以:

 newdf["page"].mean(axis=1)

原文由 Yaron 发布,翻译遵循 CC BY-SA 3.0 许可协议

如果您的意思是仅在 Cluster 为 1 或 2 的情况下取平均值,那么此处的其他答案可以解决您的问题。如果你想对 Cluster 的每个值取一个单独的平均值,你可以使用 pandas 的聚合函数,包括 groupybyagg

 df.groupby("Cluster").mean()

是最简单的,将采用所有列的方法,按集群分组。

 df.groupby("Cluster").agg({"duration" : np.mean})

是一个示例,其中您仅取一个特定列的平均值,按集群分组。您还可以使用 np.minnp.maxnp.median 等。

groupby 方法产生一个 GroupBy 对象,它有点像但又不像 DataFrame 。将其视为 DataFrame 分组,等待对其应用聚合。 GroupBy 对象具有适用于所有列的简单内置聚合函数(在第一个示例中为 mean() ),还有一个更通用的聚合函数( agg() 在第二个示例中),您可以使用它以多种方式应用特定功能。使用它的一种方法是传递 dict 键控到函数的列名,因此特定函数可以应用于特定列。

原文由 sparc_spread 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题