У меня длинный список столбцов, для которых я хочу рассчитать ненулевое среднее значение, среднее значение & std за один раз. Я не могу просто удалять строки с 0 на основе 1 столбца, потому что значение для другого столбца в том же столбце может не быть 0.Как найти ненулевое среднее/среднее из нескольких столбцов в пандах?
Ниже приведен код, который у меня есть, который вычисляет среднюю, среднюю и т. Д., Включая ноль.
agg_list_oper={'ABC1':[max,np.std,np.mean,np.median],
'ABC2':[max,np.std,np.mean,np.median],
'ABC3':[max,np.std,np.mean,np.median],
'ABC4':[max,np.std,np.mean,np.median],
.....
.....
.....
}
df=df_tmp.groupby(['id']).agg(agg_list_oper).reset_index()
Я знаю, что могу писать длинный код с циклами для обработки одной колонки за раз. Есть ли способ сделать это в pandas groupby.agg() или некоторые другие функции элегантно?
Спасибо. Должен ли я использовать np.nanmedian вместо np.median? –
Пока вы используете это внутри 'agg', вам не нужно. Pandas переводит функции numpy в функции pandas, поэтому 'np.median' игнорирует NaNs. Результат будет таким же для обоих. – ayhan