📜  在 python 中 sumif 在列上创建新列 - Python (1)

📅  最后修改于: 2023-12-03 14:51:05.127000             🧑  作者: Mango

在 Python 中使用 sumif 在列上创建新列

在数据分析中,有时我们需要对列中的数据进行汇总或者统计。在 Excel 中,我们通常会使用 SUMIF 函数来实现这样的功能。那么在 Python 中,我们该如何实现类似的功能呢?

这里介绍一个使用 Pandas 库实现的方法,可以在列上创建新列,并对数据进行汇总或统计。

准备数据

首先需要准备数据。在这个示例中,我们使用一个包含学生信息的数据集。其中包括学生的姓名、科目和成绩。

| Name  | Subject  | Score |
|-------|----------|-------|
| Alice | Math     | 85    |
| Bob   | Science  | 72    |
| Alice | English  | 90    |
| Bob   | Math     | 80    |
| Alice | Science  | 88    |
| Bob   | English  | 92    |
| Carol | Math     | 78    |
| Carol | Science  | 85    |
| Carol | English  | 89    |
使用 Pandas 的 groupby 和 transform 函数

首先,我们可以使用 Pandas 的 groupby 和 transform 函数来对数据进行分组和计算。这里我们以姓名为分组依据,对每个人的成绩进行求和。生成一个新的列 "Total Score"。

import pandas as pd

# 读取数据
df = pd.read_csv("students.csv")

# 以姓名为分组依据,对每个人的成绩求和
df["Total Score"] = df.groupby("Name")["Score"].transform(sum)

# 输出结果
print(df)

输出结果如下:

    Name  Subject  Score  Total Score
0  Alice     Math     85          263
1    Bob  Science     72          244
2  Alice  English     90          263
3    Bob     Math     80          244
4  Alice  Science     88          263
5    Bob  English     92          244
6  Carol     Math     78          252
7  Carol  Science     85          252
8  Carol  English     89          252
使用其他函数进行统计

除了求和之外,我们还可以使用其他的函数进行统计,比如求平均值、中位数等等。在这里以求平均值为例。

# 以姓名为分组依据,对每个人的成绩求平均值
df["Average Score"] = df.groupby("Name")["Score"].transform("mean")

# 输出结果
print(df)

输出结果如下:

    Name  Subject  Score  Total Score  Average Score
0  Alice     Math     85          263      87.666667
1    Bob  Science     72          244      81.333333
2  Alice  English     90          263      87.666667
3    Bob     Math     80          244      81.333333
4  Alice  Science     88          263      87.666667
5    Bob  English     92          244      81.333333
6  Carol     Math     78          252      84.000000
7  Carol  Science     85          252      84.000000
8  Carol  English     89          252      84.000000
总结

在 Python 中使用 Pandas 的 groupby 和 transform 函数可以方便地在列上创建新列,并对数据进行汇总或统计。在实际的数据分析中,这一方法具有很高的实用价值。