我有一个关于30_000记录的Pandas Dataframe,我想要查找一个特定列的所有记录,这些列的合并计数小于10。该数据帧包含临床试验数据,我需要筛选和更新的列是每个试验的疾病。有很多临床试验中出现的疾病,所以我需要首先过滤掉所有出现次数少于10次的疾病,然后将这些疾病的文本更改为一个名为“other”的新字符串。所有这些信息都需要在同一列中更新。
这是我想出来的代码,但当我尝试运行它时,JupyterLab似乎冻结了。
df_diseases = df.groupby(['Diseases']).filter(lambda x: x['Diseases'].count() < 10).apply(lambda x: x.replace(x,'other')) 发布于 2019-10-25 21:34:58
您可以使用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')发布于 2019-10-25 20:59:18
你的问题的答案可以在这里找到(寻找Pedro M Duarte的答案):Get statistics for each group (such as count, mean, etc) using pandas GroupBy?
https://stackoverflow.com/questions/58558820
复制相似问题