рассчитывать среднее значение только тогда, когда количество значений в каждой строке превышает определенное число в пандах Python - PullRequest
0 голосов
/ 17 сентября 2018

У меня есть дневной ряд данных с девятью столбцами.Каждый столбец представляет измерение из разных методов.Я хочу вычислять среднесуточное значение только тогда, когда имеется более двух измерений, в противном случае требуется назначить NaN.Как это сделать с панда данных?

предположим, что мой df выглядит так:

             0    1      2    3     4     5    6      7     8
2000-02-25  NaN   0.22  0.54  NaN   NaN  NaN   NaN   NaN    NaN
2000-02-26  0.57  NaN   0.91  0.21  NaN  0.22  NaN   0.51   NaN
2000-02-27  0.10  0.14  0.09  NaN   0.17 NaN   0.05  NaN    NaN
2000-02-28  NaN   NaN   NaN  NaN    NaN  NaN   NaN   NaN    0.14
2000-02-29  0.82  NaN   0.75  NaN   NaN  NaN   0.14  NaN    NaN

, и я ожидаю средних значений, таких как:

             0    
2000-02-25  NaN   
2000-02-26  0.48  
2000-02-27  0.11  
2000-02-28  NaN   
2000-02-29  0.57  

1 Ответ

0 голосов
/ 17 сентября 2018

Используйте where для значений NaN s по условию, созданному DataFrame.count для подсчета с исключением NaN с и сравнения по Series.gt (>):

s = df.where(df.count(axis=1).gt(2)).mean(axis=1)
#alternative soluton with changed order
#s = df.mean(axis=1).where(df.count(axis=1).gt(2))
print (s)
2000-02-25      NaN
2000-02-26    0.484
2000-02-27    0.110
2000-02-28      NaN
2000-02-29    0.570
dtype: float64
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...