У меня есть фрейм данных с именем составной , который выглядит следующим образом:
| ID | Person.ID | V.F | V.nF |
|----|-----------|-------|-------|
| 1 | 111 | True | True |
| 2 | 222 | False | True |
| 3 | 333 | True | False |
| 4 | 444 | True | False |
| 5 | 555 | True | True |
| 6 | 666 | False | True |
Для каждого Person.ID в словаре с именем nn_list у меня естьвсе связанные Person.ID для каждого Person.ID. Это выглядит так:
{ 111:[222,333,444],
222:[111,333],
333:[444],
444:[222,555],
555:[333,666],
666:[222],
}
Я хотел бы иметь возможность просмотреть словарь для всех связанных Person.IDs для данного идентификатора, суммировать логические значения (для каждого столбца) для связанных идентификаторов изатем назначьте это значение в новый столбец (столбцы) для каждой строки. Результат будет выглядеть примерно так:
| ID | Person.ID | V.F | V.nF | n_V.F | n_V.nF |
|----|-----------|-------|-------|-------|--------|
| 1 | 111 | True | True | 2 | 1 |
| 2 | 222 | False | True | 2 | 1 |
| 3 | 333 | True | False | 1 | 0 |
| 4 | 444 | True | False | 1 | 2 |
| 5 | 555 | True | True | 1 | 1 |
| 6 | 666 | False | True | 0 | 1 |
В настоящее время я могу сделать это очень медленно и неэффективно:
l=[composite.loc[composite['Person.ID'].isin(nn_list[x]),'V.F'].sum() for x in composite['Person.ID']]
composite['n_V.F']=l
l=[composite.loc[composite['Person.ID'].isin(nn_list[x]),'V.nF'].sum() for x in composite['Person.ID']]
composite['n_V.nF']=l
Есть ли более разумный способ сделать это такчто это не займет много времени, чтобы бежать? Спасибо!