首页 > 解决方案 > 如何在分组后检索数据帧的其余部分并按该分组进行索引

问题描述

我有 df 和 cols:

 date         Account  invoice  category    sales
12-01-2019    123      123      exhaust     2200
13-01-2019    124      124      tyres       1300
15-01-2019    234      125      windscreen  4500
16-01-2019    123      134      gearbox     6000

我已按帐户和销售额分组

dfres = df.groupby(['Account'])({'sales': np.sum})

我收到了:

          sales
account
123       8200
124       3300

我现在想检索按我的分组详细信息过滤的原始 df,因此减少了数据集,但我现在具有与原始相同的行数,例如仅保留前 5% 的销售额。如何删除不需要的帐户?

我试过了:

index_list = res.index.tolist()
newdf = df[df.account.isin(index_list)]

非常感谢

标签: pythonpandasdataframefiltering

解决方案


如果要保留剩余的列,则需要告诉 pandas 如何在分组后显示剩余的列。例如,如果您想将信息保存在invoice和作为构成该帐户金额的任何发票/猫/日期的列表中,则categorydate

dfres = df.groupby(['Account']).agg({'sales': np.sum, 'invoice':list, 'category':list, 'date':list})

在此处输入图像描述

然后,您可以重置索引以将其转换回平面数据框:

dfres.reset_index()

在此处输入图像描述


推荐阅读