pandas groupby 后merge 保留groupby的列

pandas groupby 后merge 保留groupby的列

pandas groupby 后merge 保留groupby的列

在数据处理中,经常会遇到需要对数据进行分组处理,然后再根据分组结果进行合并的情况。而在使用pandas进行数据处理时,可以通过groupby函数对数据进行分组,然后使用merge函数进行合并操作。在这个过程中,我们有时候需要保留groupby操作之后的列,不对其进行合并,本文将详细介绍如何使用pandas来实现这一目标。

1. 创建示例数据

为了方便演示,我们首先创建一些示例数据。假设有一个销售数据集,包含了产品ID、产品名称、销售数量以及销售额等信息。

import pandas as pd

data = {
    'Product_ID': ['A', 'B', 'A', 'B', 'C'],
    'Product_Name': ['Apple', 'Banana', 'Apple', 'Banana', 'Orange'],
    'Sales_Quantity': [100, 200, 150, 300, 120],
    'Sales_Revenue': [2000, 3000, 2500, 4000, 1500]
}

df = pd.DataFrame(data)

print(df)
Python

运行以上代码,我们可以得到如下示例数据:

  Product_ID Product_Name  Sales_Quantity  Sales_Revenue
0          A        Apple             100           2000
1          B       Banana             200           3000
2          A        Apple             150           2500
3          B       Banana             300           4000
4          C       Orange             120           1500
Python

2. 使用groupby进行分组

接下来,我们可以使用groupby函数对数据进行分组。假设我们按照产品ID进行分组,并计算每个产品的销售数量总和和销售额总和。

grouped = df.groupby('Product_ID').agg({
    'Sales_Quantity': 'sum',
    'Sales_Revenue': 'sum'
}).reset_index()

print(grouped)
Python

运行以上代码,我们可以得到按产品ID分组后的数据:

  Product_ID  Sales_Quantity  Sales_Revenue
0          A             250           4500
1          B             500           7000
2          C             120           1500
Python

3. 使用merge进行合并

接下来,我们需要将分组后的数据与原始数据进行合并,同时保留产品名称这一列。可以使用merge函数来实现这一目标。

merged = df.merge(grouped, on='Product_ID', suffixes=['', '_Total'])

print(merged)
Python

在以上代码中,我们使用了suffixes参数来区分原始数据中的列和分组后的列。运行以上代码,我们可以得到合并后的数据:

  Product_ID Product_Name  Sales_Quantity  Sales_Revenue  Sales_Quantity_Total  Sales_Revenue_Total
0          A        Apple             100           2000                   250                 4500
1          B       Banana             200           3000                   500                 7000
2          A        Apple             150           2500                   250                 4500
3          B       Banana             300           4000                   500                 7000
4          C       Orange             120           1500                   120                 1500
Python

可以看到,合并后的数据中保留了产品名称列,并且分组计算的销售数量总和和销售额总和也被保留下来。

通过以上演示,我们学习了如何使用pandas进行数据分组和合并操作,同时保留groupby的列。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册