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

📅  最后修改于: 2022-05-13 01:55:03.599000             🧑  作者: Mango

如何在 Pandas 中执行 SUMIF函数?

sumif()函数用于对数据框中的一组项目进行求和运算,它可以应用于单列和多列,我们也可以将此函数与 groupby函数一起使用。

方法 1:使用 groupby() 对所有列进行 SUMIF

此函数用于显示所有列相对于分组列的总和

创建包含 4 列的学生数据框

Python3
# import pandas module
import pandas as pd
  
# create dataframe with 4 columns
data = pd.DataFrame({
  
    "name": ['sravan', 'jyothika', 'harsha', 
             'ramya', 'sravan', 'jyothika', 
             'harsha', 'ramya', 'sravan', 'jyothika',
             'harsha', 'ramya'],
    "subjects": ['java', 'java', 'java', 'python',
                 'python', 'python', 'html/php', 
                 'html/php', 'html/php', 'php/js',
                 'php/js', 'php/js'],
    "internal marks": [98, 79, 89, 97, 82, 98, 90,
                       87, 78, 89, 93, 94],
    "external marks": [88, 71, 89, 97, 82, 98, 80,
                       87, 71, 89, 92, 64],
})
  
# display dataframe
print(data)


Python3
# import pandas module
import pandas as pd
  
# create dataframe with 4 columns
data = pd.DataFrame({
  
    "name": ['sravan', 'jyothika', 'harsha', 'ramya',
             'sravan', 'jyothika', 'harsha', 'ramya',
             'sravan', 'jyothika', 'harsha', 'ramya'],
    "subjects": ['java', 'java', 'java', 'python',
                 'python', 'python', 'html/php',
                 'html/php', 'html/php', 'php/js',
                 'php/js', 'php/js'],
    "internal marks": [98, 79, 89, 97, 82, 98, 90,
                       87, 78, 89, 93, 94],
    "external marks": [88, 71, 89, 97, 82, 98, 80,
                       87, 71, 89, 92, 64],
})
  
# find sum of all columns group by name
print(data.groupby('name').sum())
  
  
# find sum of all columns group by subjects
print(data.groupby('subjects').sum())


Python3
# import pandas module
import pandas as pd
  
# create dataframe with 4 columns
data = pd.DataFrame({
  
    "name": ['sravan', 'jyothika', 'harsha', 'ramya',
             'sravan', 'jyothika', 'harsha', 'ramya', 
             'sravan', 'jyothika', 'harsha', 'ramya'],
    "subjects": ['java', 'java', 'java', 'python',
                 'python', 'python', 'html/php', 
                 'html/php', 'html/php', 'php/js',
                 'php/js', 'php/js'],
    "internal marks": [98, 79, 89, 97, 82, 98, 90,
                       87, 78, 89, 93, 94],
    "external marks": [88, 71, 89, 97, 82, 98, 80,
                       87, 71, 89, 92, 64],
})
  
# find sum of  columns group by
# name with internal marks column
print(data.groupby('name')['internal marks'].sum())
  
print("---------------")
  
# find sum of  columns group by
# name with external marks column
print(data.groupby('name')['external marks'].sum())
  
print("---------------")
  
# find sum of  columns group by
# subjects with internal marks column
print(data.groupby('subjects')['internal marks'].sum())
  
print("---------------")
  
# find sum of  columns group by
# subjects with external marks column
print(data.groupby('subjects')['external marks'].sum())


Python3
# import pandas module
import pandas as pd
  
# create dataframe with 4 columns
data = pd.DataFrame({
  
    "name": ['sravan', 'jyothika', 'harsha', 'ramya',
             'sravan', 'jyothika', 'harsha', 'ramya', 
             'sravan', 'jyothika', 'harsha', 'ramya'],
    "subjects": ['java', 'java', 'java', 'python',
                 'python', 'python', 'html/php', 
                 'html/php', 'html/php', 'php/js', 
                 'php/js', 'php/js'],
    "internal marks": [98, 79, 89, 97, 82, 98, 90,
                       87, 78, 89, 93, 94],
    "external marks": [88, 71, 89, 97, 82, 98, 80,
                       87, 71, 89, 92, 64],
})
  
# find sum of  columns group by name with
# external marks and internal marks column
print(data.groupby('name')[['external marks',
                            'internal marks']].sum())
  
print("---------------")
  
# find sum of  columns group by subjects
# with external marks and internal marks column
print(data.groupby('subjects')[['external marks',
                                'internal marks']].sum())


输出

通过对特定列进行分组来执行所有列的总和

Python3

# import pandas module
import pandas as pd
  
# create dataframe with 4 columns
data = pd.DataFrame({
  
    "name": ['sravan', 'jyothika', 'harsha', 'ramya',
             'sravan', 'jyothika', 'harsha', 'ramya',
             'sravan', 'jyothika', 'harsha', 'ramya'],
    "subjects": ['java', 'java', 'java', 'python',
                 'python', 'python', 'html/php',
                 'html/php', 'html/php', 'php/js',
                 'php/js', 'php/js'],
    "internal marks": [98, 79, 89, 97, 82, 98, 90,
                       87, 78, 89, 93, 94],
    "external marks": [88, 71, 89, 97, 82, 98, 80,
                       87, 71, 89, 92, 64],
})
  
# find sum of all columns group by name
print(data.groupby('name').sum())
  
  
# find sum of all columns group by subjects
print(data.groupby('subjects').sum())

输出:

方法 2:一列上的 SUMIF函数

在这里,我们通过将某一列与一列分组来对某一列执行 sumif 操作

Python3

# import pandas module
import pandas as pd
  
# create dataframe with 4 columns
data = pd.DataFrame({
  
    "name": ['sravan', 'jyothika', 'harsha', 'ramya',
             'sravan', 'jyothika', 'harsha', 'ramya', 
             'sravan', 'jyothika', 'harsha', 'ramya'],
    "subjects": ['java', 'java', 'java', 'python',
                 'python', 'python', 'html/php', 
                 'html/php', 'html/php', 'php/js',
                 'php/js', 'php/js'],
    "internal marks": [98, 79, 89, 97, 82, 98, 90,
                       87, 78, 89, 93, 94],
    "external marks": [88, 71, 89, 97, 82, 98, 80,
                       87, 71, 89, 92, 64],
})
  
# find sum of  columns group by
# name with internal marks column
print(data.groupby('name')['internal marks'].sum())
  
print("---------------")
  
# find sum of  columns group by
# name with external marks column
print(data.groupby('name')['external marks'].sum())
  
print("---------------")
  
# find sum of  columns group by
# subjects with internal marks column
print(data.groupby('subjects')['internal marks'].sum())
  
print("---------------")
  
# find sum of  columns group by
# subjects with external marks column
print(data.groupby('subjects')['external marks'].sum())

输出:

方法3:多列SUMIF操作

这里我们将在多列上使用 sumif 操作。

Python3

# import pandas module
import pandas as pd
  
# create dataframe with 4 columns
data = pd.DataFrame({
  
    "name": ['sravan', 'jyothika', 'harsha', 'ramya',
             'sravan', 'jyothika', 'harsha', 'ramya', 
             'sravan', 'jyothika', 'harsha', 'ramya'],
    "subjects": ['java', 'java', 'java', 'python',
                 'python', 'python', 'html/php', 
                 'html/php', 'html/php', 'php/js', 
                 'php/js', 'php/js'],
    "internal marks": [98, 79, 89, 97, 82, 98, 90,
                       87, 78, 89, 93, 94],
    "external marks": [88, 71, 89, 97, 82, 98, 80,
                       87, 71, 89, 92, 64],
})
  
# find sum of  columns group by name with
# external marks and internal marks column
print(data.groupby('name')[['external marks',
                            'internal marks']].sum())
  
print("---------------")
  
# find sum of  columns group by subjects
# with external marks and internal marks column
print(data.groupby('subjects')[['external marks',
                                'internal marks']].sum())

输出: