Python Pandas Groupby со значениями «Промежуточный итог» на выходе?

Я действительно новичок в python, и у меня возникли трудности с упрощением шагов по созданию «промежуточного значения» при использовании функции группировки pandas в исходном фрейме данных ['Product', 'Customer'].

Пожалуйста, помогите предложить любые указатели и решения. Благодарю вас!

# Desired Output
Product Customer    Qty
Item A  Cust1       5
        Cust4       10
        Subtotal    15
Item B  Cust1       15
        Cust2       5
        Cust6       1
        Subtotal    21
Item C  Cust3       1
        Subtotal    1

# Source Dataframe
    Product Customer  Qty
0   Item A  Cust1     5
1   Item A  Cust4     10
2   Item B  Cust1     15
3   Item B  Cust2     5
4   Item B  Cust6     1
5   Item C  Cust3     1

# Source Dataframe code
source_df = pd.DataFrame({
    'Product'  : ['Item A', 'Item A', 'Item B', 'Item B','Item B', 'Item C'],
    'Customer' : ['Cust1', 'Cust4', 'Cust1', 'Cust2', 'Cust6', 'Cust3'],
    'Qty'      : [5,10,15,5,1,1]
})

Мое собственное решение:

  1. Создайте промежуточную группу фреймов данных по «Продукту» и агрегируйте «Количество» со столбцом, заполненным строковыми значениями «Промежуточный итог».
  2. Объединить исходный фрейм данных и промежуточный фрейм данных
  3. Выполните groupby еще раз для ['Product', 'Customer'], чтобы получить желаемый результат.

Это не работает, если имя клиента начинается с буквы после «S», потому что оно может быть отсортировано ниже «Промежуточного итога».

# Intermediate Subtotal Dataframe
    Product Customer    Qty
0   Item A  Subtotal    15
1   Item B  Subtotal    21
2   Item C  Subtotal    1

person lexixz    schedule 23.04.2020    source источник
comment
сортировать по Product, Customer и Qty с .sort_values   -  person modesitt    schedule 23.04.2020
comment
не могли бы вы объяснить цель использования .sort_values?   -  person lexixz    schedule 26.04.2020


Ответы (1)


Я часто сталкивался с этой проблемой в своем рабочем процессе. Одна вещь, которую вы можете сделать, это своего рода хакерство, но работает, это использовать «[Промежуточный итог]» вместо «Промежуточный итог». Скобки вокруг него правильно отсортируют его для вас.

Здесь я спрашивал и получал ответы на подобные вопросы раньше.

ссылка 1

ссылка 2

person keg5038    schedule 23.04.2020
comment
Это довольно информативно! Спасибо за советы. Я согласен, что это своего рода «хакерство», и это основная причина, по которой я публикую здесь свою проблему. - person lexixz; 26.04.2020