python 条件求和_【Python】条件求和sumif功能用python实现

使用Python的pandas库实现类似Excel中条件求和sumif的功能。首先导入pandas和numpy,读取两个Excel文件,然后在df1中新增一列'订单量',其值为df2中对应姓名的订单量之和。通过df.loc[]结合apply函数和lambda表达式实现条件求和。

0ec002bc6572e233cbc3af065038cb24.png

先上代码

#导入padas和numpy库

import pandas as pd

import numpy as np

#读取文件内容

df1 = pd.read_excel(r'aaa.xlsx', sheet_name='Sheet1')

df2 = pd.read_excel(r'ccc.xlsx', sheet_name='Sheet1')

# print(df1)

# print(df2)

#以df1为基础,将df2的sumif结果合并到df1

df1['订单量'] = df2.姓名.apply(lambda x : df2.订单量.loc[df2.姓名 == x].sum())

print(df1)

分段执行

afc674e747dc3bdee286abdb9e04dcd9.png

d27b5ea8a015be6c2ddd08436b0e204c.png

e61fb7e72dc774f93628fff4704534ed.png

代码解析

pandas中的df.loc[]主要是根据DataFrame的行标和列标进行数据的筛选:

读取整列数据用如下代码

df1.loc[:,['姓名']]

:代表所有行,[]中间写具体列名取两列,在[]内用逗号隔开:df1.loc[:,['姓名','工号']] 

b1960ec1385a16a4021d4e1c50662a02.png

取指定行数据用如下代码

df1.loc[0:2]  

0代表第一行2代表第三行:3代表0~4行,切片用法

cddf0a79783e1ffd6b3c3ceb8065633a.png

取指定行列用如下代码

df1.loc[0:2,['工号']] 

行列之间用逗号隔开行不加中括号列加中括号

3c9688da1b34fcb05680d888cc4e2683.png

apply函数主要用于对DataFrame中的行或者列进行特定的函数计算

34682ac6b3d604301682552d609ead32.png

lambda 函数,又称匿名函数(不需要指定函数名)。当我们需要定义一个函数时,又懒得写命名时时。就可以通过lambda实现。另外使得代码更加简洁。

匿名函数语法:

lambda(关键词):x,y,… (代表函数的入参):m(m代表返回值,即return m)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值