pandas 中的新列 - 通过应用列表 groupby 将系列添加到数据框

作者:编程家 分类: pandas 时间:2025-03-30

使用pandas中的groupby方法可以方便地根据特定的列进行分组,并对每个组进行操作。在这篇文章中,我们将介绍如何通过应用列表将新的系列添加到数据框中,并给出相应的案例代码。

首先,让我们来看一个示例数据框。假设我们有一个销售数据表,其中包含了销售人员的姓名、销售额和销售日期。我们想要根据销售人员的姓名将销售额进行分组,并计算每个销售人员的总销售额。

 python

import pandas as pd

# 创建示例数据框

data = {'姓名': ['张三', '李四', '王五', '张三', '李四', '王五'],

'销售额': [1000, 2000, 1500, 3000, 2500, 1800],

'销售日期': ['2021-01-01', '2021-01-02', '2021-01-01', '2021-01-02', '2021-01-03', '2021-01-03']}

df = pd.DataFrame(data)

print(df)

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

姓名 销售额 销售日期

0 张三 1000 2021-01-01

1 李四 2000 2021-01-02

2 王五 1500 2021-01-01

3 张三 3000 2021-01-02

4 李四 2500 2021-01-03

5 王五 1800 2021-01-03

现在,我们想要根据姓名对销售额进行分组,并计算每个销售人员的总销售额。可以通过以下代码实现:

 python

# 按姓名分组,并计算总销售额

total_sales = df.groupby('姓名')['销售额'].sum()

print(total_sales)

输出结果如下:

姓名

张三 4000

李四 4500

王五 3300

Name: 销售额, dtype: int64

通过上述代码,我们成功地根据姓名进行了分组,并计算了每个销售人员的总销售额。这些结果存储在一个新的系列中。

接下来,我们将介绍如何将这个新的系列添加到原始的数据框中。可以使用`pd.merge()`方法来实现这个目标。

 python

# 将新的系列添加到数据框中

df = pd.merge(df, total_sales, left_on='姓名', right_index=True, suffixes=('', '_总销售额'))

print(df)

输出结果如下:

姓名 销售额 销售日期 销售额_总销售额

0 张三 1000 2021-01-01 4000

3 张三 3000 2021-01-02 4000

1 李四 2000 2021-01-02 4500

4 李四 2500 2021-01-03 4500

2 王五 1500 2021-01-01 3300

5 王五 1800 2021-01-03 3300

通过上述代码,我们成功地将新的系列“销售额_总销售额”添加到了原始的数据框中。这个新的列包含了每个销售人员的总销售额。

通过应用列表和groupby方法,我们可以方便地将新的系列添加到数据框中。首先,我们使用groupby方法对数据进行分组,并进行相应的计算或操作。然后,将得到的结果存储在一个新的系列中。最后,我们可以使用merge方法将这个新的系列添加到原始的数据框中。

以上是关于如何通过应用列表将新的系列添加到数据框的介绍和案例代码。希望本文对你在使用pandas进行数据处理时有所帮助!