Рассчитайте средневзвешенное использование с использованием Pandas Groupby и справиться с NANPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Рассчитайте средневзвешенное использование с использованием Pandas Groupby и справиться с NAN

Сообщение Anonymous »

Я пытаюсь рассчитать средневзвешенное использование GroupBy. Тем не менее, я имею дело с пустым значением в своем DataFrame. < /P>

Код: Выделить всё

df = pd.DataFrame({
'group': ['a', 'a', 'a', 'a'],
'x': [10, 20, np.nan, 20],
'weight_x': [10, 15, np.nan, 25],
'y': [25, 35, 45, np.nan],
'weight_y': [10, 20, 10, np.nan]
})
< /code>
Это моя функция группы: < /p>
summary = (
df
.groupby(['group'])
.apply(
lambda x: pd.Series([
np.average(x['x'], weights=x['weight_x']),
np.average(x['y'], weights=x['weight_y'])
], index=['wt_avg_x', 'wt_avg_y'])
)
.reset_index()
)
< /code>
Этот дает следующий вывод: < /p>
  group  wt_avg_x  wt_avg_y
0     a       NaN       NaN
< /code>
Однако ожидаемый выход должен быть следующим: < /p>
  group  wt_avg_x  wt_avg_y
0     a      20.5        35
< /code>
Я попробовал это решение: < /p>
summary = (
df.dropna(subset=['x', 'y', 'weight_x', 'weight_y'])
.groupby(['group'])
.apply(
lambda x: pd.Series([
np.average(x['x'], weights=x['weight_x']),
np.average(x['y'], weights=x['weight_y'])
], index=['wt_avg_x', 'wt_avg_y'])
)
.reset_index()
)
Но Dropna выпускает всю строку. Как я мог игнорировать значения NAN только в функции np.average ?

Подробнее здесь: https://stackoverflow.com/questions/791 ... l-with-nan
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»