pandas: как получить, если столбец больше x, выбрать максимум из двух столбцов, иначе выбрать среднее? - PullRequest
0 голосов
/ 19 января 2020

У меня есть df, который выглядит следующим образом, и я хочу добавить среднее значение, которое выбирает max, если один из двух столбцов (avg или roll_mean) равен 0, в противном случае он получает среднее из двух столбцов.

 ID Avg  rolling_mean   adj_mean (goal to have this column)

 0  5    0              5

 1  6    6.3            6.15

 2  5    8              6.5

 3  4    0              4

Я смог получить максимальное значение столбцов, используя этот код

 df["adj_mean"]=df[["Avg", "rolling_mean"]].max(axis=1)

, но не уверен, как добавить среднее значение, если оба значения больше нуля.

Большое спасибо!

1 Ответ

2 голосов
/ 19 января 2020

Одним из подходов может быть обработка 0 как NaN, а затем просто вычисление среднего значения

df['adj_mean'] = df.replace({0: np.nan})[["Avg", "rolling_mean"]].mean(axis=1)

Out[1]: 
   rolling_mean  Avg  adj_mean
0           0.0    5      5.00
1           6.3    6      6.15
2           8.0    5      6.50
3           0.0    4      4.00

По умолчанию df.mean() пропускает нулевые значения. Согласно документам :

skipna : bool, по умолчанию True Исключить значения NA / null при вычислении результата.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...