我有这个数据框:
InvoiceID PaymentDate TotalRevenue Discount Discount_Revenue
0 72A04E22 2020-07-03 17:25:13 1650000.0 0.0 1650000.0
1 54FCFCB9 2021-03-17 14:26:08 5500000.0 0.0 5500000.0
...
在下面的聚合之后,列 PaymentDate
已删除:
df.groupby(by=['InvoiceID'])[['TotalRevenue','Discount','Discount_Revenue']].sum().reset_index(drop=True, inplace=True)
我怎么还能保留group by或聚合函数中未提及的列?
1条答案
按热度按时间wljmcqd81#
当你在做一件事的时候
groupby
具有sum
这意味着您正在聚合数据:来自多个具有相同属性的行InvoiceID
只保留一个,其中包含所有行的值之和df
.假设这是两次具有相同行的 Dataframe :
然后你可以在求和时看到这个效果
Discount
例如:具体回答你的问题:专栏
PaymentDate
已删除,因为您未指定如何聚合它对于没有意义添加的列,例如。
PaymentDate
,您需要定义另一个要使用的聚合函数。您想保留第一次付款日期吗?最后一个?请注意
InvoiceID
没有在上面的示例中消失,您是在使用.reset_index(drop=True)
假设我们选择保留最后一个付款日期,然后使用reset_index
没有drop=True
为了保留发票ID,我们有:这就是所有的列,它们都以某种方式(sum或max)从原始 Dataframe 中的行聚合而来。