📅  最后修改于: 2023-12-03 15:38:22.412000             🧑  作者: Mango
在 Excel 中,SUMIF() 是一种用于按条件汇总数据的函数,该函数非常有用且广泛使用。在 Pandas 中,类似的功能可以通过使用一些方法实现。
SUMIF() 是一个 Excel 函数,用于根据指定的条件,将符合条件的数值求和。
在 Pandas 中,可以使用 groupby() 方法和 sum() 方法来实现类似于 SUMIF() 函数的功能。
如果只需要根据一个条件进行求和,则可以使用以下代码:
df[df['条件列']==条件]['求和列'].sum()
例子:
import pandas as pd
data = {
'姓名': ['张三', '李四', '王五', '赵六', '钱七'],
'学科': ['语文', '数学', '语文', '数学', '语文'],
'成绩': [80, 90, 85, 95, 75],
}
df = pd.DataFrame(data)
语文成绩总和 = df[df['学科']=='语文']['成绩'].sum()
print(f'语文成绩总和:{语文成绩总和}')
运行结果:
语文成绩总和:240
如果需要根据多个条件进行求和,则可以使用 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 方法进行更加复杂的操作。