Как группировать и присваивать значения серий каждой строке?Python

Программы на Python
Anonymous
Как группировать и присваивать значения серий каждой строке?

Сообщение Anonymous »

У меня есть следующий кадр данных (прочитанный из файла csv):

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

     my_df:
my_date    my_id  values  key   factor
1/1/2024   _One    123    key1   .56
1/7/2024   _One    567    key1   .75
1/14/2024  _One    100    key1   .81
1/14/2024  _One    100    key2   .44
1/1/2024   _Two    150    key3   .91
1/7/2024   _Two    130    key3   .88
1/1/2024   _Three  200    key4    0
1/1/2024   _Three  200    key5    .45
Итак, существует совпадение определенных дат для двух или более ключей, принадлежащих одному и тому же идентификатору. Я хочу, чтобы мой фрейм данных выглядел следующим образом: мне нужно вычислить выделенные значения на основе весов факторов. Примечание: расчетный вес получается путем деления коэффициента на сумму коэффициентов в перекрывающихся периодах. Скажем,

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

     my_df:
my_date    my_id   values  key   factor    weights allocated_values
1/1/2024   _One    123     key1    0.56    1       123
1/7/2024   _One    500     key1    0.75    1       500
1/14/2024  _One    100     key1    0.81    0.648   64.8
1/14/2024  _One    100     key2    0.44    0.352   35.2
1/1/2024   _Two    160     key3    0.91    1       160
1/7/2024   _Two    130     key3    0.88    1       130
1/1/2024   _Three  200     key4    0      0.50     100
1/1/2024   _Three  200     key5    0.45   0.50     100

Чтобы достичь вышеуказанного результата, я выполняю следующую группу:

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

     for name, group in my_df.groupby('my_id'):
for name1, group1 in group.groupby('key'):
factors = group1['factor']
weight = factors['factor']/factors.sum() if factors.sum() != 0 | (factors==0).any() else 1/len(factors)
#what i tried- approach1
group['weights'] = weight #doesn't work
#what i tried next
my_df['weights'] = my_df.update(group) #doesn't work

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

Подробнее здесь: https://stackoverflow.com/questions/786 ... o-each-row

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