笛卡尔积文本的python处理

一 背景

大致背景是这样的,笔者在做数据处理时,遇到一个棘手的事情,主要遇到如下字符串拼接变动的场景,场景主要为,需要考虑如下两张表的组合:
表1-原始文本样式

序号文本样式
1A变量B
2A变量C
3A变量CD
4E变量CF
5C变量CE
6B变量CD

其中文本里的变量有一个取值范围,这个范围只有用户提供的时刻才知道有多少范围,大致的变量是这样
表2-变量取值范围

序号变量
1a
2b
3c
4d
5e
6f

如果做上述的变量组合,文本存在的组合场景有很多,简单举例A变量B的组合文本就有6种组合,组合参考如下:

序号组合文本
1AaB
2AbB
3AcB
4AdB
5AeB
6AfB

二 数据处理

数据处理的思路可以参考如下几种:
第一种,手工复制粘贴
一开始我想在Excel做简单的复制粘贴草草了事,但是实际的数据量要比例子里的还要多很多倍,而且很可能手工处理粘贴处理错误,所以考虑下还是做特殊的自动化处理比较妥当。
第二种,使用powerBI
微软Excel工具,它的PowerBI功能可以组合出上述场景,但是由于笔者的电脑现在不是Windows,此方法暂时没有使用,如果有Windows电脑类似诉求的可以使用之前记录的powerBI文档:笛卡尔积在Excel中的连接使用
第三种,训练chatGPT
我尝试使用chatGPT来自动给我生成文本,但是尝试多次的数据沟通和训练,结果并不理想,还浪费了我很多检查和优化的对话时间。

第四种,使用代码辅助
最后我借用python代码做了如下的简单处理,主要处理步骤如下:
1.使用代码生成组合场景
2.导出数据到Excel
3.进行简单excel函数处理,做文本拼接
步骤1:python脚本参考样例


import itertools
import numpy as np
import pandas as pd# 定义两个数据集
raw_path = "./test_date/"
A = [1,2,3,4,5,6]
B = [ 'a','b','d']# 使用itertools库的product函数计算笛卡尔积
cartesian_product = list(itertools.product(A, B))
getform = pd.DataFrame(cartesian_product)
getform.to_csv('mytest.csv',index=False)# 打印结果
for item in cartesian_product:print(item)

步骤2 导出Excel
导出Excel的数据截图长这个样子,考虑怎么简单怎么来,标黄的部分为表头,没有定义标题,默认为0和1
导出的数据
步骤3 简单Excel处理
主要使用的函数:
VLOOKUP函数:查询当前可能存在的原始文本模式
SUBSTITUTE函数:将当前的可替换变量,替换成要组合的实际字符
参考数据截图如下:
C2单元格的处理函数:VLOOKUP(A2,J:K,2,0)
D2单元格的处理函数:SUBSTITUTE(C2,“变量”,B2)
数据处理过程
当然如果数据量比较大,也可以考虑将步骤3的函数做代码处理,一步生成对应的Excel报表,由于数据量还算适中,因此没有做这么复杂

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/78770.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自然语言处理学习笔记(五)————切分算法

目录 1.切分算法 2.完全切分 3.正向最长匹配 4.逆向最长匹配 5.双向最长匹配 6.速度评测 1.切分算法 词典确定后,句子可能含有很多词典中的词语,他们有可能互相重叠,如何切分需要一些规则。常用规则为:正向匹配算法、逆向匹…

Redis事务、管道

一.Redis事务 1.概念 可以一次执行多个命令,本质是一组命令的集合。一个事务中的所有命令都会序列化,按顺序地串行化执行而不会被其它命令插入,不许加塞 2.Redis事务与数据库事物的区别 3.常用命令 4.事务执行情况 正常执行 即整个过程…

JMeter(二十四)、使用吞吐量控制器实现不同的用户操纵不同的业务

一、需求 需求:博客系统,模拟用户真实行为,80%的用户阅读文章,20%的用户创建文章,创建文章的用户随机的删除或者修改文章。 二、脚本实现 80%的用户查看文章 20%用户创建文章 根据post_id是否能整除2,决…

Python实现GA遗传算法优化BP神经网络回归模型(BP神经网络回归算法)项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 遗传算法(Genetic Algorithm,GA)最早是由美国的 John holland于20世…

ChatGPT实战:创业咨询,少走弯路,少踩坑

用九死一生形容创业再适合不过,不过一旦成功回报也很诱人,这也是为什么那么多人下场创业。纸上得来终觉浅,绝知此事要躬行,创过业的人都知道其中的心酸,而他们也建议你去创业,因为那真不是一般人能干的事。…

Flutter编译一直显示Running Gradle task ‘assembleDebug‘

🔥 目前开发的Android Studio版本 🔥 🔥 当前Flutter SDK 版本 🔥 Flutter 3.10.6 • channel stable • https://github.com/flutter/flutter.git Framework • revision f468f3366c (3 周前) • 2023-07-12 15:19:05 -0700 Eng…

【云原生】Serverless 技术架构分析

一、什么是Serverless? 1、Serverless技术简介 ​ Serverless(无服务器架构)指的是由开发者实现的服务端逻辑运行在无状态的计算容器中,它由事件触发, 完全被第三方管理,其业务层面的状态则被开发者使用的数据库和存…

PVE虚拟化平台之安装openKylin开源操作系统

PVE虚拟化平台之安装openKylin开源操作系统 一、openKylin介绍1.1 openKylin简介1.2 openKylin特性 二、下载openKylin系统镜像2.1 官方网址2.2 下载openKylin系统镜像 三、上传镜像到PVE存储3.1 检查PVE环境3.2 上传镜像 四、创建虚拟机4.1 设置虚拟机名称4.2 操作系统设置4.3…

mac前端代码编辑 Sublime Text 4 Dev 中文v4.0(4151)

Sublime Text 4 for Mac是一款功能强大的代码编辑器,适合所有需要高效编写代码和进行代码管理的程序员使用。 快速响应:Sublime Text 4在加载文件和执行命令时非常快速,能够让用户在高效的开发过程中体验到无缝的交互。 多种语言支持&#…

LeetCode[207]课程表

难度:Medium 题目: 你这个学期必须选修 numCourses 门课程,记为 0 到 numCourses - 1 。 在选修某些课程之前需要一些先修课程。 先修课程按数组 prerequisites 给出,其中 prerequisites[i] [ai, bi] ,表示如果要学习…

使用上 Spring 的事件机制

本文主要是简单的讲述了Spring的事件机制,基本概念,讲述了事件机制的三要素事件、事件发布、事件监听器。如何实现一个事件机制,应用的场景,搭配Async注解实现异步的操作等等。希望对大家有所帮助。 Spring的事件机制的基本概念 …

xcode 的app工程与ffmpeg 4.4版本的静态库联调,ffmpeg内下的断点无法暂停。

先阐述一下我的业务场景,我有一个iOS的app sdk项目,下面简称 A ,以及运行 A 的 app 项目,简称 A demo 。 引用关系为 A demo 引用了 A ,而 A 引用了 ffmpeg 的静态库(.a文件)。此时业务出现了 b…

Linux上安装Keepalived,多台Nginx配置Keepalived(保姆级教程)

目录 一、yum安装 第一步:下载 第二步:编辑Keepalived配置文件(第一台) 第三步:编辑Keepalived配置文件(第二台) 第四步:我们在本机利用cmd ping一下 一、yum安装 第一步&…

【数据结构篇】手写双向链表、单向链表(超详细)

文章目录 链表1、基本介绍2、单向链表2.1 带头节点的单向链表测试类:链表实现类: 2.2 不带头节点的单向链表2.3 练习测试类:链表实现类: 3、双向链表测试类:双向链表实现类: 4、单向环形链表**测试类**&…

从零开始实现一个 mini-Retrofit 框架

前言 本篇文章将采用循序渐进的编码方式,从零开始实现一个Retorift框架,在实现过程中不断提出问题并分析实现,最终开发出一个mini版的Retrofit框架 演示一个使用OkHttp的项目Demo 为了更好的演示框架的实现过程,这里我先创建了一…

mongodb-win32-x86_64-2008plus-3.4.24-signed.msi

Microsoft Windows [版本 6.1.7601] 版权所有 (c) 2009 Microsoft Corporation。保留所有权利。C:\Users\Administrator>cd C:\MongoDB\Server\3.4\binC:\MongoDB\Server\3.4\bin>C:\MongoDB\Server\3.4\bin>mongod --help Options:General options:-h [ --help ] …

【MySQL】增删查改基础

文章目录 一、创建操作1.1 单行插入1.2 多行插入1.3 插入否则替换更新1.4 替换replace 二、查询操作2.1 select查询2.2 where条件判断2.3 order by排序2.4 limit筛选分页结果 三、更新操作四、删除操作4.1 删除一列4.2 删除整张表数据 五、插入查询结果 CRUD : Create(创建), R…

CS 144 Lab Four 收尾 -- 网络交互全流程解析

CS 144 Lab Four 收尾 -- 网络交互全流程解析 引言Tun/Tap简介tcp_ipv4.cc文件配置信息初始化cs144实现的fd家族体系基于自定义fd体系进行数据读写的adapter适配器体系自定义socket体系自定义事件循环EventLoop模板类TCPSpongeSocket详解listen_and_accept方法_tcp_main方法_in…

【雕爷学编程】Arduino动手做(188)---0.66寸OLED液晶屏模块

37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的&#x…

Source Insight显示行号

1、默认不显示行号 (1)Source Insight默认是不显示行号的,如下图所示。 2、配置显示行号 2.1、方法1 (1)点击View→Line Numbers。 2.2、方法2 (1)空白处鼠标右键,在点击"Line Numbers"。 (2)配置显示行号后如下图所示。