Как усреднить определенные значения столбца на основе состояния других столбцов в пандах - PullRequest
0 голосов
/ 19 октября 2018

У меня есть фрейм данных, например:

Index    Date      Type  Value
0      01/01/2010    A    10
1      01/01/2010    B    15
2      01/01/2010    B    25
3      01/01/2010    A    12
4      01/02/2010    A    9
5      01/02/2010    B    17
6      01/02/2010    B    20
7      01/02/2010    A    8

Я хочу создать новый столбец так, чтобы для каждой строки он усреднял значения, основанные на типе и на основе даты, поэтому для данной даты всестроки с типом A будут иметь одинаковое среднее значение и одинаково для типа B. Например, на 01.01.2010 все буксировки с типом A будут (10 + 12) / 2 = 11, а все строки с типом B будут (15+25) / 2 = 20:

Index    Date      Type  Value  Value2
0      01/01/2010    A    10    11
1      01/01/2010    B    15    20
2      01/01/2010    B    25    20
3      01/01/2010    A    12    11
4      01/02/2010    A    9    8.5
5      01/02/2010    B    17   13.5
6      01/02/2010    B    20   13.5
7      01/02/2010    A    8    8.5

1 Ответ

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

Возможно, вы хотите groupby и transform (хотя я не уверен в желаемом выводе, почему тип B для 01/02/2010 равен 13.5, я думаю, что это должно быть 18.5, т.е. в среднем 17 и 20):

df['Value2'] = df.groupby(['Type','Date']).Value.transform('mean')
>>> df
   Index        Date Type  Value  Value2
0      0  01/01/2010    A     10    11.0
1      1  01/01/2010    B     15    20.0
2      2  01/01/2010    B     25    20.0
3      3  01/01/2010    A     12    11.0
4      4  01/02/2010    A      9     8.5
5      5  01/02/2010    B     17    18.5
6      6  01/02/2010    B     20    18.5
7      7  01/02/2010    A      8     8.5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...