Pandas означает среднее значение, только если присутствует определенное количество числовых значений - PullRequest
0 голосов
/ 04 мая 2020

У меня есть набор данных с тройными значениями, например:

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

Использование mean с groupby приводит к получению всех значений столбца. Как добавить отказ от ответственности, который вычисляет среднее значение только при наличии определенного числа числовых значений?

Ответы [ 2 ]

2 голосов
/ 04 мая 2020

Мы можем сделать min_count с sum, затем разделить с count. PS: интересно у нас нет min_count в mean

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
0 голосов
/ 04 мая 2020

Вот еще одно решение, которое может помочь:

enter image description here

enter image description here

...