熊猫:按条件分组

时间:2019-04-10 09:14:35

标签: python pandas group-by transactions

我必须对不包含任何SmallSeller产品(SellCategory)的交易(发票编号)进行分组,我不确定如何进行。

我最终将不得不比较两种交易(包含Quantity*UnitPrice产品的交易和不包含任何SmallSeller产品的交易)产生的收入(SmallSeller)。< / p>

(这是我的数据的一个示例)

    InvoiceNo   SellCategory    Revenue

      23        Medium-Seller     54
      23         Best-Seller     108
      23         Best-Seller      71
      24        Medium-Seller     43
      24         Small-Seller     18
      25         Best-Seller      89
      25         Small-Seller     23
      26        Medium-Seller     65
      26         Best-Seller      98
      26         Small-Seller     23

Screenshot of my data's table

3 个答案:

答案 0 :(得分:0)

您可以按照以下方式进行分组,然后继续进行进一步的操作:

df[df.SellCategory != 'Small-Seller'].groupby('InvoiceNo')

答案 1 :(得分:0)

df_pivot=df.pivot_table(index='InvoiceNo',columns='SellCategory',values='Revenue',aggfunc='sum').reset_index()

答案 2 :(得分:0)

首先,我们可以选择相关的行,然后在Revenue上使用groupby聚合InvoiceNo。 最后,我们最后将两种数据帧连接起来,并重命名列:

df1 = pd.concat([df[df['SellCategory'] == 'Small-Seller'].groupby('InvoiceNo').sum(), df[df['SellCategory'] == 'Small-Seller'].groupby('InvoiceNo').sum()], 1)

df1.columns = ['Revenue_Small_Seller', 'Revenue_without_Small_Seller']