Рассчитать среднее значение каждой последующей группы из 2 рядов с пандами - PullRequest
0 голосов
/ 29 апреля 2019

Я пытаюсь вычислить среднее значение каждой последующей группы из 2 строк для всего фрейма данных.Я думаю, что я получил это со следующей строкой: df.groupby(np.arange(len(df))//2).mean()

Однако проблема в том, что не все значения являются числовыми.В этом случае, если вторая строка группы является числовой, а первая - нет, вместо среднего значение остается таким же, как и во второй строке.В случае, если обе строки не числовые, значение должно быть присвоено 0.

Для лучшей визуализации у меня есть этот фрейм данных:

    Well    Ct
0    A1    Undetermined
1    A2    Undertermined
2    A3    Undetermined
3    A4    41.2
4    B1    42
5    B2    43

То, что я пытаюсь получить, это:

     Well     Ct
0    A1-A2    0.0
1    A3-A4    41.2
2    B1/B2    42.5

Есть ли способ сделать этот или другой подобный вопрос, который уже был опубликован?

1 Ответ

5 голосов
/ 29 апреля 2019

Используйте pandas.to_numeric, чтобы привести нечисловые значения к NaN с (которые панды будут игнорировать по умолчанию при расчете средних), затем используйте groupby + agg, чтобы назначить ваши окончательные группы.


df.Ct = pd.to_numeric(df.Ct, errors='coerce')

df.groupby(np.arange(df.shape[0]) // 2).agg({'Well': '-'.join, 'Ct': 'mean'}).fillna(0)

    Well    Ct
0  A1-A2   0.0
1  A3-A4  41.2
2  B1-B2  42.5
...