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

У меня есть Pandas Dataframe с примерно 30_000 записями, и я хотел бы найти все записи для определенного столбца, общее количество которых меньше 10. Dataframe содержит данные клинических испытаний, а столбец, который мне нужно отфильтровать и обновить, - это болезни, для которыхкаждое испытание. Существуют заболевания, которые появляются в многочисленных клинических испытаниях, поэтому мне нужно сначала отфильтровать все заболевания, которые появляются менее чем в 10 раз, а затем, для этих заболеваний, заменить текст на новую строку под названием «прочее». Вся эта информация должна быть обновлена ​​в том же столбце.

Это код, который я придумал, но JupyterLab, кажется, зависает, когда я пытаюсь его запустить.

df_diseases = df.groupby(['Diseases']).filter(lambda x: x['Diseases'].count() < 10).apply(lambda x: x.replace(x,'other')) 

Ответы [ 2 ]

1 голос
/ 25 октября 2019

Вы можете использовать groupby().transform():

s = df.groupby('Diseases')['Diseaes'].transform('count')
df.loc[s < 10, 'Disease'] = 'other'

Или вы можете использовать value_counts и map:

s = df['Diseases'].value_counts()

df['Dieases'] = np.where(df['Dieases'].map(s) > 10, df['Dieaseas'], 'other')
0 голосов
/ 25 октября 2019
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...