当前位置: 首页 > news >正文

文件按关键字分组-切割-染色-写入excel

1. 背景

        针对下面的文件data.csv,首先根据fid进行排序,然后分组,使相同fid的记录放到同一个excel文件中,并对每列重复的数据元素染上红色。

fid,user_id
-1000078398032092029,230410010036537520
-1000078398032092029,230423010026993942
-1000078398032092029,230505010027684603
-101241766345369238,210911010005526495
-101241766345369238,211017010017923011
-101241766345369238,230113010029633164
-101241766345369238,230514010028256452
-101241766345369238,230518010036813773
-1045165137456710,220401010038956742
-1045165137456710,220401010038956742
-1050918014514687463,210805010001898014
-1050918014514687463,210805010001898014
-111(手动添加一个结束标志)

2. 分组切割文件

import pandas as pd
pd.set_option('display.max_rows', None)# 根据fid对文件进行分割,每个fid一个文件
def split_df_by_fid():df = pd.read_csv('data.csv', dtype=str)row_split_list = []  # 记录分割点索引current_fid = '-1000078398032092029'  # 第一个fidstart = 0end = startcnt = 1  # 记录当前是第几个分割子文件for fid in df['fid']:if fid != current_fid:row_split_list.append((start, end))# 当前fid组写入一个新文件df[start:end].to_csv('data_split/' + str(cnt) + '.csv', index=0)cnt += 1current_fid = fidstart = endend += 1print("总文件数: ", len(row_split_list))print(row_split_list)# [(0, 3), (3, 8), (8, 10), (10, 12)]

输出

3. 染色-写入excel

1. 找到同列重复元素

def group_by_find_duplicate_values(group_df: pd.DataFrame, col: str) -> list:value_counts = group_df[col].value_counts().reset_index()return value_counts[value_counts[col] > 1]['index'].to_list()

2. 插入图片

def inset_a_img(row_index, col_index, img_name):image_path = os.path.join("data_img/", img_name.replace('/', '_'))h, w, *_ = cv2.imread(image_path).shapescale = CEIL_HEIGHT * 1.3 / hSHEET.insert_image(row_index, col_index, image_path,  # x_offset可调整x轴图片偏移{'x_offset': 0, 'y_offset': 0, 'x_scale': scale, 'y_scale': scale, 'positioning': 1})

3. 同列相同元素染色

# -*- coding: utf-8 -*-
import os
import cv2
import tqdm
import pandas as pd
import xlsxwriter
CEIL_HEIGHT = 156def write_color():df = pd.read_csv(input_file, dtype=str)for i, col in enumerate(df.columns):SHEET.write(0, i, col)  # 第0行第i列插入表头字段try:for i, line in tqdm.tqdm(enumerate(df.itertuples())):  # tqdm: 显示进度条temp_df = df[df['fid'] == line.fid]for j, col in enumerate(df.columns):duplicate_values = group_by_find_duplicate_values(temp_df, col)content = str(df.iloc[i, j])# 染色cell_format = BOOK.add_format({'font_color': 'red' if (content in duplicate_values and j > 0) else 'black'})if col not in ('face_path', 'ocr_path'):# SHEET.write(*(i + 1, j), content, cell_format)SHEET.write(i+1, j, content, cell_format)else:if col == 'face_path' and not pd.isna(line.face_path):inset_a_img(i+1, j, line.face_path)  # 为Nan的置空,不写入图片if col == 'ocr_path' and not pd.isna(line.ocr_path):inset_a_img(i+1, j+1-1, line.ocr_path)BOOK.close()except Exception as e:print(e)if __name__ == '__main__':for file in os.listdir('data_split'):input_file = 'data_split/' + fileoutput_file = 'data_split_xlsx/' + file.replace('csv', 'xlsx')BOOK = xlsxwriter.Workbook(output_file)SHEET = BOOK.add_worksheet('sheet1')SHEET.set_default_row(CEIL_HEIGHT)SHEET.set_column(0, 60, 25)  # 分别为要修改的起始列,终止列,设置的列宽write_color()

输出

 

相关文章:

文件按关键字分组-切割-染色-写入excel

1. 背景 针对下面的文件data.csv,首先根据fid进行排序,然后分组,使相同fid的记录放到同一个excel文件中,并对每列重复的数据元素染上红色。 fid,user_id -1000078398032092029,230410010036537520 -1000078398032092029,23042301…...

爬虫的基本原理:爬虫概述及爬取过程

前言 随着互联网的不断发展和普及,我们的生活越来越离不开网络。而网络世界中有着海量的信息和数据,这些信息和数据对于我们的工作和生活都有很大的帮助。但是,如何高效地获取这些数据呢?这时候,爬虫这个工具就派上用…...

cocos2D插件转3D插件

cocos2D插件转3D插件 use strict;/*** 3d插件api映射,兼容2d插件* */let fs require("fs");let path require("path");let baseDir ;const prsPath (Editor.Project && Editor.Project.path ? Editor.Project.path : Editor.remote.projectP…...

[Angular] 主从表结构,从表记录在主表固定栏位上呈现

Background 主从表结构,有时为了方便数据呈现,在UI上不显示从表资料,那么需要动态把从表的资料加载到主表的固定栏位上。 例如:主表是人员信息,从表是银行卡信息,一个人在同一家银行可能有多张银行卡&…...

Kotlin Multiplatform 创建多平台分发库

目标:通过本教程学习如何使用 Kotlin Multiplatform Library 创建多平台分发库(iOS,安卓)。 创建一个项目 1、本教程使用的是Android Studio创建 2、选择 新建工程,选择 Kotlin Multiplatform Library 3、点击next 输入需要创建的项目名称以…...

[SQL挖掘机] - union/union all 使用注意事项

因为当使用union和union all操作符时,有一些注意事项需要考虑: 1. 列数和数据类型匹配: 要使用union或union all合并结果集,两个或多个查询的 select 语句必须返回相同数量和类型的列。确保每个查询返回相同的列数,并…...

php 单例模式

1&#xff0c;单例模式&#xff0c;属于创建设计模式&#xff0c;简单来说就是一个类只能有一个实例化对象&#xff0c;并提供一个当前类的全局唯一可访问入口&#xff1b; 2&#xff0c;例子 <?phpclass Singleton {private static $instance null;// 禁止被实例化priva…...

【数据结构】实验二:顺序表

实验二 顺序表 一、实验目的与要求 1&#xff09;熟悉顺序表的类型定义&#xff1b; 2&#xff09;熟悉顺序表的基本操作&#xff1b; 3&#xff09;灵活应用顺序表解决具体应用问题。 二、实验内容 1&#xff09;在一个整数序列a1,a2,…,an中&#xff0c;若存在一个数&…...

【高级数据结构】线段树

目录 最大数&#xff08;单点修改&#xff0c;区间查询&#xff09; 线段树1&#xff08;区间修改&#xff0c;区间查询&#xff09; 最大数&#xff08;单点修改&#xff0c;区间查询&#xff09; 洛谷&#xff1a;最大数https://www.luogu.com.cn/problem/P1198 题目描述 …...

qt简易闹钟

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);ui->stopBtn->setDisabled(true);this->setFixedSize(this->size()); //设置固定大小this->s…...

python和c加加有什么区别,c和c++和python先学哪个

本篇文章给大家谈谈c加加编程和python编程有什么区别&#xff0c;以及python和c加加有什么区别&#xff0c;希望对各位有所帮助&#xff0c;不要忘了收藏本站喔。 1、python和c学哪个好 学C好。 C通常比Python更快&#xff0c;因为C是一种编译型语言&#xff0c;而Python则是…...

Visual Studio 2022 cmake配置opencv开发环境

1. 环境与说明 这里我用的是 widnows 10 64位&#xff0c;Visual Studio 用的 Visual Studio Community 2022 (社区版) 对于Android开发工程师来说&#xff0c;为什么要使用Visual Studio 呢 ? 因为在Visual Studio中开发调试OpenCV方便&#xff0c;可以开发调试好后&#xf…...

C++ GDAL找出多时相遥感影像缺失的日期并自动生成新的全零图像作为替补

本文介绍基于C 语言的GDAL库&#xff0c;基于一个存储大量遥感影像的文件夹&#xff0c;依据每一景遥感影像的文件名中表示日期的那个字段&#xff0c;找出这些遥感影像中缺失的成像日期&#xff0c;并新生成多个像元值全部为0的栅格文件&#xff0c;作为这些缺失日期当日的遥感…...

【AI底层逻辑】——篇章5(下):机器学习算法之聚类降维时间序列

续上&#xff1a; 目录 4、聚类 5、降维 6、时间序列 三、无完美算法 往期精彩&#xff1a; 4、聚类 聚类即把相似的东西归在一起&#xff0c;与分类不同的是&#xff0c;聚类要处理的是没有标签的数据集&#xff0c;它根据样本数据的分布特性自动进行归类。 人在认知是…...

P1980 [NOIP2013 普及组] 计数问题

[NOIP2013 普及组] 计数问题 题目描述 试计算在区间 1 1 1 到 n n n 的所有整数中&#xff0c;数字 x x x&#xff08; 0 ≤ x ≤ 9 0\le x\le9 0≤x≤9&#xff09;共出现了多少次&#xff1f;例如&#xff0c;在 1 1 1 到 11 11 11 中&#xff0c;即在 1 , 2 , 3 , 4…...

需求管理全过程流程图及各阶段核心关注点详解

分析报告指出&#xff0c;多达76%的项目失败是因为差劲的需求管理&#xff0c;这个是项目失败的最主要原因&#xff0c;比落后的技术、进度失控或者混乱的变更管理还要关键。很多项目往往在开始的时候已经决定了失败&#xff0c;谜底就在谜面上&#xff0c;开始就注定的失败&am…...

Android开源 自定义emoji键盘,EmojiPack v2.1版本

目录 一&#xff0c;简介 二、安装 添加jitpack 仓库 添加依赖: 混淆规则: 三、使用 1、一次性配置emoji显示处理 二、emoji的自定义键盘的使用 一&#xff0c;简介 EmojiPack当前已提供emoji的显示和emoji的选择自定义键盘&#xff0c;在emoji显示这一方面&#xff0…...

SOLIDWORKS软件的优势分析 硕迪科技

在现代的机械设计领域&#xff0c;SOLIDWORKS是一款备受青睐三维设计软件&#xff0c;它具备强大的建模和设计功能&#xff0c;在全球范围内广泛应用于机械设计和工程领域&#xff0c;为用户提供了全面的工程解决方案。本文就SOLIDWORKS的优势进行详细分析。 1、易于学习和使用…...

Android性能优化之游戏的Theme背景图

近期&#xff0c;对游戏的内存优化&#xff0c;通过内存快照发现&#xff0c;某个Activity的theme背景图 占用3M 多。考虑着手对齐进行优化。 问题 查看游戏中的内存快照&#xff0c;发现有一个图片bitmap 占用3M 多&#xff0c;设置在Activity的背景中&#xff1a; 查看Phon…...

网络安全(黑客)系统自学,成为一名白帽黑客

前言 黑客技能是一项非常复杂和专业的技能&#xff0c;需要广泛的计算机知识和网络安全知识。你可以参考下面一些学习步骤&#xff0c;系统自学网络安全。 在学习之前&#xff0c;要给自己定一个目标或者思考一下要达到一个什么样的水平&#xff0c;是学完找工作&#xff08;…...

CyberChef终极指南:浏览器内的免费网络安全瑞士军刀

CyberChef终极指南&#xff1a;浏览器内的免费网络安全瑞士军刀 【免费下载链接】CyberChef CyberChef: 是一个开源的在线工具&#xff0c;可以帮助安全分析师自动化处理和分析网络安全相关的任务&#xff0c;如数据加密、压缩和混淆等。适合安全分析师和网络工程师使用 CyberC…...

基于Simulink的多输出隔离DC-DC交叉调整率优化​

目录 手把手教你学Simulink——基于Simulink的多输出隔离DC-DC交叉调整率优化​ 摘要​ 一、背景与挑战​ 1.1 多输出隔离DC-DC的应用与交叉调整率问题​...

从游戏到医疗:用Touch™和OpenHaptics 3.5解锁Windows力反馈应用新场景(附Unity与C++双环境配置要点)

从游戏到医疗&#xff1a;Touch™力反馈技术的跨界应用与开发实践 想象一下&#xff0c;外科医生在虚拟手术训练中感受到真实的组织阻力&#xff0c;汽车维修学员通过触觉反馈"触摸"到发动机零件的磨损痕迹&#xff0c;游戏玩家在射击游戏中体验到不同武器的后坐力差…...

别再花钱买会员了!手把手教你用D-ID AI Studio免费复活老照片,7天试用期全攻略

零成本玩转AI影像修复&#xff1a;D-ID免费额度深度使用指南 老照片承载着无数珍贵回忆&#xff0c;但褪色、折痕让它们逐渐模糊。如今AI技术让这些记忆重获新生——无需付费订阅&#xff0c;你完全可以通过合理规划免费资源完成老照片动画化项目。本文将彻底拆解如何最大化利用…...

Qwen3-Embedding-4B开箱即用:SGlang部署避坑指南

Qwen3-Embedding-4B开箱即用&#xff1a;SGlang部署避坑指南 1. Qwen3-Embedding-4B简介 Qwen3-Embedding-4B是Qwen系列最新推出的文本嵌入模型&#xff0c;专为语义检索、文本分类等任务优化。作为4B参数量的中型模型&#xff0c;它在效果与效率之间取得了良好平衡&#xff…...

Clawdbot+Qwen3-32B部署指南:Ollama模型注册与配置详解

ClawdbotQwen3-32B部署指南&#xff1a;Ollama模型注册与配置详解 1. 开始前的准备&#xff1a;理解Clawdbot与Qwen3-32B的关系 在动手之前&#xff0c;先理清楚几个关键概念。Clawdbot&#xff08;现在已更名为OpenClaw&#xff09;本质上是一个智能代理框架&#xff0c;它本…...

效率倍增:用快马平台智能优化你的openclaw更新工作流

最近在折腾openclaw的更新命令时&#xff0c;发现每次手动输入各种参数和检查依赖实在太费时间了。经过一番摸索&#xff0c;我发现用InsCode(快马)平台可以大幅优化这个流程&#xff0c;今天就把我的经验分享给大家。 智能参数补全 以前最头疼的就是记不住各种参数组合&#x…...

python-dateutil - 强大的日期时间解析与计算工具

一、什么是python-dateutil&#xff1f; python-dateutil 是一个用于扩展标准库 datetime 模块的 Python 库。 它可以帮助你&#xff1a; 灵活地解析各种格式的日期时间字符串。进行复杂的日期时间计算&#xff0c;例如计算两个日期之间的相对时间。处理时区信息&#xff0c;…...

Qwen3模型快速部署教程:10分钟搞定GPU环境与首次调用

Qwen3模型快速部署教程&#xff1a;10分钟搞定GPU环境与首次调用 你是不是也对那些动辄几十GB、部署起来让人头大的大模型望而却步&#xff1f;觉得在自己的机器上跑起来一个像样的AI模型&#xff0c;是件门槛很高的事情&#xff1f; 今天&#xff0c;我就带你打破这个刻板印…...

图像降噪避坑指南:为什么你的sym4小波处理效果不明显?

图像降噪避坑指南&#xff1a;为什么你的sym4小波处理效果不明显&#xff1f; 当你在深夜调试代码&#xff0c;反复对比sym4小波处理前后的图像时&#xff0c;屏幕上的像素似乎在对你冷笑——降噪效果远不如论文里展示的那般惊艳。这不是个例&#xff0c;在计算机视觉开发者社群…...