Взять среднее значение только для определенных значений из каждой строки в DataFrame, группируя строки с одинаковым именем индекса и игнорируя Nan? - PullRequest
0 голосов
/ 08 октября 2018

Если у меня есть DataFrame, где я хочу сгруппировать строки с одинаковым именем индекса, скажем:

  a   b   c
c 2   1   -
c nan 2   -
d 4   3   -
e 5   4   -
d 6   5   -

Я хочу объединить строки с одинаковым именем столбца, принимая среднее значение их значений встолбец а и б.Так что df превратится в:

  a  b 
c 2  1.5 
d 5  4
e 5  4

Если я сделаю:

averaging = df.groupby(["Index"])[['a', 'b']].mean()

(«Индекс» - это имя, заданное для строк)

Это работает,за исключением того, что это не игнорирует НАН.Таким образом, вместо моего желаемого кадра данных, я получаю:

  a   b
c nan 1.5
d 5   4
e 5   4

1 Ответ

0 голосов
/ 08 октября 2018

Вы можете использовать mean с level=0

pd.to_numeric(df.a,errors='coerce').mean(level=0)
Out[438]: 
c    2.0
d    5.0
e    5.0
Name: a, dtype: float64

Также nan не является NaN, используя replace

df=df.replace('nan',np.nan)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...