用python实现sumifs的功能

2023-12-10 03:37
文章标签 python 实现 功能 sumifs

本文主要是介绍用python实现sumifs的功能,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

用python实现sumifs的功能

缺点:运行速度特别慢

你的代码中,每次循环都在进行DataFrame的查询操作,而DataFrame的查询操作是非常耗时的。特别是在你的情况下,你正在对一个很大的DataFrame进行查询,这会导致代码运行得非常慢。

import pandas as pd  def sumifs_excel(sheet1_data, sheet2_data, sum_col_names, criteria_col_names):  df1 = pd.DataFrame(sheet1_data[1:], columns=sheet1_data[0])  df2 = pd.DataFrame(sheet2_data[1:], columns=sheet2_data[0])  result = []  for index, row in df2.iterrows():  criteria = {col: row[col] for col in criteria_col_names}  sum_results = []  for sum_col_name in sum_col_names:  filter_statement = ' & '.join(['({} == "{}")'.format(key, criteria[key]) for key in criteria])  sum_result = df1.query(filter_statement)[sum_col_name].sum()  sum_results.append(sum_result)  result.append(sum_results)  for col, col_result in zip(sum_col_names, zip(*result)):  df2[col] = col_result  return df2.values.tolist()  # 示例数据  
sheet1 = [['店铺名称', '款号', '是否作废', '购买单价', '金额'],  ['淘宝旗舰店', '71204300', '作废', 149.0, 200],  ['淘宝旗舰店', '32204100', '正常', 69.0, 100],  ['测试专卖店', 'B1204300', '正常', 79.0, 150],  ['淘宝旗舰店', '71204300', '正常', 119.0, 200],  ['淘宝旗舰店', '64204150', '正常', 129.0, 300],  ['淘宝旗舰店', 'E1204250', '正常', 129.0, 300],  ['唯品会(OMS发货)', '71184021', '正常', 234.0, 400],  ['淘宝旗舰店', 'E1204481', '正常', 369.0, 500]]  sheet2 = [['店铺名称', '是否作废'], ['淘宝旗舰店', '作废'], ['淘宝旗舰店', '正常'], ['测试专卖店', '正常'], ['唯品会(OMS发货)', '正常']]  sum_cols = ['购买单价', '金额']  
criteria_cols = ['店铺名称', '是否作废']  # 调用函数并打印结果  
result = sumifs_excel(sheet1, sheet2, sum_cols, criteria_cols)  
print(result)

这篇关于用python实现sumifs的功能的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/475922

相关文章

JAVA封装多线程实现的方式及原理

《JAVA封装多线程实现的方式及原理》:本文主要介绍Java中封装多线程的原理和常见方式,通过封装可以简化多线程的使用,提高安全性,并增强代码的可维护性和可扩展性,需要的朋友可以参考下... 目录前言一、封装的目标二、常见的封装方式及原理总结前言在 Java 中,封装多线程的原理主要围绕着将多线程相关的操

MySQL中实现多表查询的操作方法(配sql+实操图+案例巩固 通俗易懂版)

《MySQL中实现多表查询的操作方法(配sql+实操图+案例巩固通俗易懂版)》本文主要讲解了MySQL中的多表查询,包括子查询、笛卡尔积、自连接、多表查询的实现方法以及多列子查询等,通过实际例子和操... 目录复合查询1. 回顾查询基本操作group by 分组having1. 显示部门号为10的部门名,员

java导出pdf文件的详细实现方法

《java导出pdf文件的详细实现方法》:本文主要介绍java导出pdf文件的详细实现方法,包括制作模板、获取中文字体文件、实现后端服务以及前端发起请求并生成下载链接,需要的朋友可以参考下... 目录使用注意点包含内容1、制作pdf模板2、获取pdf导出中文需要的文件3、实现4、前端发起请求并生成下载链接使

Java的volatile和sychronized底层实现原理解析

《Java的volatile和sychronized底层实现原理解析》文章详细介绍了Java中的synchronized和volatile关键字的底层实现原理,包括字节码层面、JVM层面的实现细节,以... 目录1. 概览2. Synchronized2.1 字节码层面2.2 JVM层面2.2.1 ente

讯飞webapi语音识别接口调用示例代码(python)

《讯飞webapi语音识别接口调用示例代码(python)》:本文主要介绍如何使用Python3调用讯飞WebAPI语音识别接口,重点解决了在处理语音识别结果时判断是否为最后一帧的问题,通过运行代... 目录前言一、环境二、引入库三、代码实例四、运行结果五、总结前言基于python3 讯飞webAPI语音

基于Python开发PDF转PNG的可视化工具

《基于Python开发PDF转PNG的可视化工具》在数字文档处理领域,PDF到图像格式的转换是常见需求,本文介绍如何利用Python的PyMuPDF库和Tkinter框架开发一个带图形界面的PDF转P... 目录一、引言二、功能特性三、技术架构1. 技术栈组成2. 系统架构javascript设计3.效果图

Linux下修改hostname的三种实现方式

《Linux下修改hostname的三种实现方式》:本文主要介绍Linux下修改hostname的三种实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux下修改ho编程stname三种方式方法1:修改配置文件方法2:hFvEWEostnamectl命

Java使用Mail构建邮件功能的完整指南

《Java使用Mail构建邮件功能的完整指南》JavaMailAPI是一个功能强大的工具,它可以帮助开发者轻松实现邮件的发送与接收功能,本文将介绍如何使用JavaMail发送和接收邮件,希望对大家有所... 目录1、简述2、主要特点3、发送样例3.1 发送纯文本邮件3.2 发送 html 邮件3.3 发送带

Java实现数据库图片上传功能详解

《Java实现数据库图片上传功能详解》这篇文章主要为大家详细介绍了如何使用Java实现数据库图片上传功能,包含从数据库拿图片传递前端渲染,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1、前言2、数据库搭建&nbsChina编程p; 3、后端实现将图片存储进数据库4、后端实现从数据库取出图片给前端5、前端拿到

Java实现将byte[]转换为File对象

《Java实现将byte[]转换为File对象》这篇文章将通过一个简单的例子为大家演示Java如何实现byte[]转换为File对象,并将其上传到外部服务器,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言1. 问题背景2. 环境准备3. 实现步骤3.1 从 URL 获取图片字节数据3.2 将字节数组