过滤GroupBy Pandas中均值的最小值

mwyxok5s  于 2023-01-04  发布在  其他
关注(0)|答案(2)|浏览(136)

我有一个星星大战人物df与以下列:

columns = [name, height, mass, birth_year, gender, homeworld]
  • 名称是索引 *

我需要计算以下内容:

哪个星球上的角色平均质量指数最低?哪个角色来自那个星球?

我试过了:

df.groupby(["homeworld"]).filter(lambda row: row['mass'].mean() > 0).min()

但是,我需要在filter中有min(),因为我可以在母世界中有多个字符具有最低的平均质量指数,现在filter函数没有做任何事情,只是显示我希望代码是什么样的。
我该怎么做呢?希望能用过滤器函数。

nmpmafwu

nmpmafwu1#

用途:

#aggreagate mean to Series
s = df.groupby("homeworld")['mass'].mean()

#filter out negative values and get homeworld with minimum value
out = s[s.gt(0)].idxmin()

#filter original DataFrame
df1 = df[df['homeworld'].eq(out)]
ztyzrc3y

ztyzrc3y2#

你说“母星中有超过1个角色的平均质量指数最低”是什么意思?
每个母世界有多少字符并不重要,groupby聚合和mean方法将为您计算平均值。
当我看问题的时候,你可以这样做:

df = df.groupby(['homeworld']).mean().sort_values(by=["mass"], ascending=False)
df.head(1)

注意显示的母星

相关问题