Pandas 仅当存在一定数量的数值时才取平均值

Pandas take mean only if a certain number of numerical values is present

我有一个包含三次值的数据集,如下所示:

ID  x   y   z
A   1   NA  NA
A   1   1   0.6
A   1   NA  0.4
B   NA  NA  NA
B   NA  0.5 1
B   NA  0.5 NA
...

我想对 A 和 B 取一式三份的平均值,但前提是每个列和组有两个或更多数值。所以结果应该是这样的:

ID  x   y   z
A   1   NA  0.5
B   NA  0.5 NA

meangroupby 结合使用会得到所有列值。如何添加仅在存在一定数量的数值时才计算平均值的免责声明?

我们可以用 summin_count,然后用 count 除。 PS:有趣的是我们在 mean

中没有 min_count
s=df.groupby('ID').sum(min_count=2)/df.groupby('ID').count()
Out[178]: 
      x    y    z
ID               
A   1.0  NaN  0.5
B   NaN  0.5  NaN

这是另一个可能有用的解决方案: