如何获得大Pandas前n组?

2024-06-17 10:07:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个熊猫数据框。dataframe中的最后一列是dataframe中每个唯一组的RelAb列的最大值(在本例中,是一个物种分配),如下所示:

df_melted['Max'] = df_melted.groupby('Species')['RelAb'].transform('max')

如您所见,最大值表示在组的所有行中。每个组包含大量行。我有按最大值排序的df,每个最大值大约有100行。我的目标是根据最大值(即100 X 20行-2000行的df)获得前20个组。我不想从数据帧中的组中删除单个行,而是删除整个组。你知道吗

我正在粘贴数据帧的子集,其中组的最大值从一个“最大”值更改为下一个:

original df

我的感觉是,我需要转换max,使一个值代表整个组,然后根据该列进行排序,也许是这样?你知道吗

Possible <code>df</code> to address inquiry

在上下文中,我这样做的原因是因为我计划为每个样本制作一个包含表中最丰富物种的堆积条形图。现在,物种实在太多了,所以这使得堆积条形图毫无信息可言。你知道吗


Tags: 数据目标dataframedf排序物种transformmax
1条回答
网友
1楼 · 发布于 2024-06-17 10:07:48

一种方法是:


aux = (df_melted.groupby('Species')['RelAb']
           .max()
           .nlargest(20, keep='all')
           .to_list())

top20 = df_melted.loc[df_melted['Max'].isin(aux), :].copy()

相关问题 更多 >