Панды: группа с условием - PullRequest
0 голосов
/ 10 апреля 2019

Я должен сгруппировать транзакции (InvoiceNo), которые не содержат какого-либо продукта SmallSeller (SellCategory), и я не уверен, как поступить.

Мне, наконец, придется сравнить доход (Quantity*UnitPrice), сгенерированные обоими типами транзакций (те, которые содержат продукт SmallSeller по сравнению с транзакциями, не содержащими продукт SmallSeller).

(это пример моих данных)

    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

Снимок экрана с таблицей моих данных

Ответы [ 3 ]

0 голосов
/ 10 апреля 2019
df_pivot=df.pivot_table(index='InvoiceNo',columns='SellCategory',values='Revenue',aggfunc='sum').reset_index()
0 голосов
/ 10 апреля 2019

Сначала мы можем выбрать соответствующие строки, а затем агрегировать 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']
0 голосов
/ 10 апреля 2019

Вы можете группировать следующим образом, а затем переходить к дальнейшим операциям:

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