Я действительно новичок в python, и у меня возникли некоторые трудности с упрощением моих шагов по созданию «значения промежуточного итога» при использовании функции pandas groupby на исходном фрейме данных ['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]
})
Мое собственное решение:
- Создайте промежуточную группу данных по элементу «Продукт» и объедините «Кол-во» со столбцом, заполненным строковыми значениями «Итого» * 1009 *
- Конкатенация исходного и промежуточного фрейма данных
- Еще раз выполнить групповую обработку на ['Product', 'Customer'], чтобы получить желаемый результат
Не работает, если клиент имя начинается с буквы после 'S', поскольку оно может быть отсортировано ниже 'Итого'.
# Intermediate Subtotal Dataframe
Product Customer Qty
0 Item A Subtotal 15
1 Item B Subtotal 21
2 Item C Subtotal 1