сгруппировать, чтобы получить среднее значение, используя динамическое условие - PullRequest
0 голосов
/ 25 июня 2018

Я искал группу, используя условия и нашел много сообщений об этом. Например: Панды: условные групповые вычисления

Однако я не смог найти ни одного, где условие накладывается на самого себя. В моем случае я хотел бы получить среднее значение (или подсчет или любую другую формулу в этом отношении), но единственное, что я не смог найти, это отфильтровать набор данных по динамическому условию.

Чтобы проиллюстрировать это, это краткий набор данных:

ID | Seq | Total 
1  | 1   | 1
1  | 2   | 2
1  | 3   | 3
2  | 1   | 1
2  | 2   | 2
2  | 3   | 1

Если я хочу получить среднее значение, сгруппированное по ID, но с дополнительным условием, что для каждой записи в группе должны вычисляться только те, у которых Seq меньше. Это должно быть результатом

ID | Seq | Total | x
1  | 1   | 1     | 1 <-- mean of 1
1  | 2   | 2     | 1.5 <-- mean of 1 and 2
1  | 3   | 3     | 2 <-- mean of 1,2 and 3
2  | 1   | 1     | 1 <-- mean of 1
2  | 2   | 2     | 1.5 <-- mean of 1 and 2
2  | 3   | 1     | 1.33  < mean of 1, 2 and 1

Любая помощь будет оценена!

1 Ответ

0 голосов
/ 25 июня 2018

Похоже, вы просто пытаетесь получить expanding().mean() из ID -группированного столбца Total, например:

In []:
df['x'] = df.groupby('ID')['Total'].expanding().mean().values
df

Out[]:
   ID  Seq  Total         x
0   1    1      1  1.000000
1   1    2      2  1.500000
2   1    3      3  2.000000
3   2    1      1  1.000000
4   2    2      2  1.500000
5   2    3      1  1.333333
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...