输出中带有“小计”值的Python Pandas Groupby?

Posted

技术标签:

【中文标题】输出中带有“小计”值的Python Pandas Groupby?【英文标题】:Python Pandas Groupby with 'Subtotal' values in output? 【发布时间】:2020-04-23 17:44:06 【问题描述】:

我真的是 python 新手,在源数据框 ['Product', 'Customer'] 上使用 pandas groupby 函数时,在简化创建“小计值”的步骤时遇到了一些困难。

请帮助提供任何指示和解决方案。谢谢!

# 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]
)

我自己的解决方案:

    按“产品”创建一个中间数据框组并聚合“数量”,并用一个填充了“小计”字符串值的列 连接源数据帧和中间数据帧 再次对 ['Product', 'Customer'] 执行 groupby 以获得所需的输出

如果客户的姓名在“S”之后以字母开头,则它不起作用,因为它可能在“小计”下方排序。

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

【问题讨论】:

ProductCustomerQty.sort_values排序 您能解释一下使用 .sort_values 的目的吗? 【参考方案1】:

我的工作流程经常遇到这个问题。您可以做的一件事有点老套,但有效的是使用“[Subtotal]”而不是“Subtotal”。它周围的括号将为您正确排序。

这是我之前就类似问题提出过并得到回答的地方。

link 1

link 2

【讨论】:

这是非常有用的信息!感谢您的小费。我同意这有点“hacky”,这是我在这里发布问题的主要原因。

以上是关于输出中带有“小计”值的Python Pandas Groupby?的主要内容,如果未能解决你的问题,请参考以下文章

如何根据 pandas-python 中带有空格的图像拆分列中的值

Python Pandas str.contains() 行中带有超链接

如何使用 groupby 调整 pandas 中的小计列?

python中带有字符串列表的列

Pandas 数据透视表行小计

具有多索引的 Pandas 数据透视表小计