Самый эффективный способ разделить и выполнить функцию на фрейме данных панд - PullRequest
0 голосов
/ 18 октября 2019

Мне дан кадр данных, который содержит два измерения значения (A и B) в строках, и каждый столбец представляет измерения для выборки.

Пример ниже:

ID S1 S2 S3
M1_A 1 2 3 
M1_B 3 2 1
M2_A 1 2 3 
M2_B 3 2 1 

Мне нужно рассчитать отношение B к A + B [то есть (B / (A + B))] для каждого измерения каждого образца.

Пример кадра данных результата:

ID S1 S2 S3
M1 0.75 0.5 .25 
M2 0.75 0.5 .25

В настоящее время я читаю в файле две строки за раз, проверяю совпадение идентификатора (исключая _A или _B), преобразовываю «строки» в векторы и затем выполняю вычисление для вектора. На больших выборках это происходит очень медленно.

Какой самый эффективный способ сделать это с помощью библиотеки, такой как pandas?

Спасибо за помощь!

1 Ответ

2 голосов
/ 18 октября 2019

Это звучит как классическая групповая проблема. Панды также могут легко обрабатывать подчеркивание в столбце ID.

df['ID'] = df['ID'].str.split('_').str[0]
df = df.groupby('ID').agg(lambda x: x.values[-1]/x.sum())
print(df)

      S1   S2    S3
ID                 
M1  0.75  0.5  0.25
M2  0.75  0.5  0.25
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...