Выполнение функций для мультииндексного столбца данных на основе значений столбца - PullRequest
0 голосов
/ 24 июня 2019

У меня есть датафрейм, который выглядит так:

                   |    PACKAGES SHIPPED     |    PACKAGES TRANSFERRED   |
Product & Quantity | Apple-5 pk | Apple-5 pk | Apple-5 pk  |  Apple-5pk  |
Store Branch I.D.  |  34234324  |  34235555  |  34234324   |  34235555   |
----------------------------------------------------------------------------
   Period Week     
   5/14 - 5/20     |     5      |     10     |     20      |     7       |
   5/21 - 5/27     |     40     |      X     |      1      |     Y       |

Этот Dataframe имеет многостолбцовые заголовки «отгруженных пакетов», где есть много филиалов магазина, у которых все будет «отгруженных пакетов».

Если бы я хотел суммировать "Отправленные пакеты" и "Переданные пакеты" для определенного значения "Продукт и количество" и для конкретного "Идентификатора магазина и филиала", для каждой периодической недели, какой был бы наиболее эффективный способ сделай это?

В идеале результирующий кадр данных будет:

                   |Sum Shipped & Transferred|Sum Shipped & Transferred  |                     
Product & Quantity |       Apple-5 pk        |         Apple-10 pk       |
Store Branch I.D.  |  34234324  |  34235555  |  34234324   |  34235555   |
----------------------------------------------------------------------------
   Period Week     
   5/14 - 5/20     |     25     |     17     |     40      |     234     |
   5/21 - 5/27     |     41     |     X+Y    |     34      |      25     |

1 Ответ

0 голосов
/ 24 июня 2019

Может быть полезно рассмотреть представление этого в виде кадра данных, а не в качестве изображения.Вот простой способ рассмотреть вашу проблему.Конечно, если у вас действительно есть данные, хранящиеся с многоколоночными индексами, представленными на вашем рисунке, то это не поможет.

In [33]: df = pd.DataFrame({'Period Week':['5/14 - 5/20','5/21 - 5/27','5/14 - 5/20','5/21 - 5/27'],'Transaction':['Shi
    ...: pped','Shipped','Transfered','Transfered'],'Package SKU':['Apples-5k','Apples-10k','Apples-5k','Apples-10k'],'
    ...: Quantity':[5,10,20,7]})

In [34]: df
Out[34]:
   Period Week Transaction Package SKU  Quantity
0  5/14 - 5/20     Shipped   Apples-5k         5
1  5/21 - 5/27     Shipped  Apples-10k        10
2  5/14 - 5/20  Transfered   Apples-5k        20
3  5/21 - 5/27  Transfered  Apples-10k         7

Затем установите индекс на несколько столбцов:

df.set_index(['Period Week','Transaction','Package SKU'])

Наконец, сгруппировать и вычислить

In [35]: df.groupby(['Period Week','Package SKU'])['Quantity'].count()
Out[35]:
Period Week  Package SKU
5/14 - 5/20  Apples-5k      2
5/21 - 5/27  Apples-10k     2
Name: Quantity, dtype: int64
...