📜  如何在 Pandas 中执行 SUMIF函数?(1)

📅  最后修改于: 2023-12-03 15:38:22.412000             🧑  作者: Mango

如何在 Pandas 中执行 SUMIF 函数?

在 Excel 中,SUMIF() 是一种用于按条件汇总数据的函数,该函数非常有用且广泛使用。在 Pandas 中,类似的功能可以通过使用一些方法实现。

什么是 SUMIF 函数?

SUMIF() 是一个 Excel 函数,用于根据指定的条件,将符合条件的数值求和。

在 Pandas 中执行 SUMIF() 函数的方法

在 Pandas 中,可以使用 groupby() 方法和 sum() 方法来实现类似于 SUMIF() 函数的功能。

1. 单个条件求和

如果只需要根据一个条件进行求和,则可以使用以下代码:

df[df['条件列']==条件]['求和列'].sum()

例子:

import pandas as pd

data = {
    '姓名': ['张三', '李四', '王五', '赵六', '钱七'],
    '学科': ['语文', '数学', '语文', '数学', '语文'],
    '成绩': [80, 90, 85, 95, 75],
}

df = pd.DataFrame(data)

语文成绩总和 = df[df['学科']=='语文']['成绩'].sum()
print(f'语文成绩总和:{语文成绩总和}')

运行结果:

语文成绩总和:240
2. 多条件求和

如果需要根据多个条件进行求和,则可以使用 groupby() 方法和 sum() 方法实现。

df.groupby(['条件列1', '条件列2'...])['求和列'].sum()

例子:

import pandas as pd

data = {
    '姓名': ['张三', '李四', '王五', '张三', '李四', '王五', '赵六', '钱七', '钱七'],
    '学科': ['语文', '数学', '语文', '语文', '数学', '语文', '数学', '语文', '数学'],
    '成绩': [80, 90, 85, 95, 75, 90, 85, 75, 80],
}

df = pd.DataFrame(data)

语文数学成绩总和 = df.groupby(['姓名', '学科'])['成绩'].sum()
print(语文数学成绩总和)

# 可以使用 reset_index() 方法将其转换为 DataFrame,并重命名列名
语文数学成绩总和 = 语文数学成绩总和.reset_index()
语文数学成绩总和 = 语文数学成绩总和.rename(columns={'成绩': '成绩总和'})
print(语文数学成绩总和)

运行结果:

姓名  学科 
张三  语文    175
     数学     90
李四  数学     165
     语文     90
王五  语文    175
赵六  数学     85
钱七  数学     80
     语文     75
Name: 成绩, dtype: int64
   姓名  学科  成绩总和
0  张三  语文   175
1  张三  数学    90
2  李四  数学   165
3  李四  语文    90
4  王五  语文   175
5  赵六  数学    85
6  钱七  数学    80
7  钱七  语文    75
总结

在 Pandas 中,可以使用类似于 SUMIF() 函数的方法将符合条件的数值求和,这是非常有用的。在实际应用中,还可以结合其他的 Pandas 方法进行更加复杂的操作。