Python对Excel表格的操作

今天, 实现了一个对excel表格操作的技术方案.

操作的要求是:
(1)在一个目标表格(表格2)中的第2列已经有唯一标识码.第1列为凭证号, 但是是空的.
(2)在数据表格中(表格1)中有资产的信息, 其中第2列是资产的唯一标识码, 第1列是凭证号.
(3)表格2内只有部分资产.

要求:
从表格1中的找到与表格2中唯一标识码一样的资产凭证号, 将表格2中的资产凭证号填写完整.

方法:
遍历表格2中的每一行, 找到该行的唯一标识码, 然后从表格1中找到该唯一标识码的行, 将这行的凭证号赋值为表格一的当前遍历行.

需要的库

pandas 和 openpyxl
下载安装命令:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pandas openpyxl

代码实现

import pandas as pd  # 加载Excel文件  
df = pd.read_excel('表格1.xlsx', engine='openpyxl')  #打开表格1文件
df2=pd.read_excel('表格2.xlsx', engine='openpyxl')   #打开表格2文件for index, row in df2.iterrows():  #遍历表格2中的所有行#print(row[1])#print(df.loc[df.iloc[:,1]==row.iloc[1],df.columns[0]].values[0])#value=df.loc[df.iloc[:,1]==row.iloc[1],df.columns[0]]#将当前行的第1列赋值为表格1中第2列的值与该行第2列值相同的行的第1列值#即:在表格1中找到第2列与当前行第2列相同的行   df.iloc[:,1]==row.iloc[1]#    然后获得找到的行的第1列的值    df.loc[df.iloc[:,1]==row.iloc[1],df.columns[0]].values[0]#    赋值给当前行的第1列 df2.loc[index,df2.columns[0]]=。。。df2.loc[index,df2.columns[0]]=df.loc[df.iloc[:,1]==row.iloc[1],df.columns[0]].values[0]df2.to_excel('表格2_g.xlsx', index=False, engine='openpyxl') #将df2重新写入文件

excel操作代码知识

DataFrame

pd.read_excel函数或pd.DataFrame可以创建DataFrame对象:

df = pd.read_excel('工作簿1.xlsx', engine='openpyxl')
df2 = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]})
type(df)
type(df2)

输出:

<class 'pandas.core.frame.DataFrame'>

选择或索引数据

DataFrame.loc和DataFrame.iloc
loc使用标签来索引;
iloc使用序号(0为开始序号)来索引.
索引行:

df.loc[0]  # 行的标签就是行号, 从0开始
df.iloc[0]  

索引列:

df2.loc[:,'B']
df2.iloc[:,1]

loc和iloc在切片时(如df.loc[0:2, ‘A’]或df.iloc[0:2, 0])的行为略有不同。loc的切片是包含结束标签的(左闭右闭区间),而iloc的切片是不包含结束位置的(左闭右开区间):

df.loc[0:2, 'A']

上面代码输出:

0    1
1    2
2    3
Name: A, dtype: int64
df.iloc[0:2, 0]

上面代码输出:

0    1
1    2
Name: A, dtype: int64

切片的类型是Series类: <class ‘pandas.core.series.Series’>

打开excel文件

dfs = pd.read_excel('工作簿1.xlsx', sheet_name=None, engine='openpyxl')

返回一个dict, 包含所有工作表;

没有sheet_name参数: 返回第一个工作表, 类型DataFrame

返回指定的一个或多个工作表: 如sheet_name=‘Sheet1’, sheet_name=[‘Sheet1’,‘Sheet2’], 指定一个表是返回DataFrame类型, 指定多个表时,返回dict类型

工作表使用名称索引

df=dfs['Sheet1']

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

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

相关文章

前端:鼠标点击实现高亮特效

一、实现思路 获取鼠标点击位置 通过鼠标点击位置设置高亮裁剪动画 二、效果展示 三、按钮组件代码 <template><buttonclass"blueBut"click"clickHandler":style"{backgroundColor: clickBut ? rgb(31, 67, 117) : rgb(128, 128, 128),…

C# OpenCvSharp 图像处理函数-图像拼接-hconcat、vconcat、Stitcher

在图像处理和计算机视觉领域,图像拼接是一个常见的操作。OpenCvSharp是一个用于.NET平台的OpenCV封装库,可以方便地进行图像处理。本文将详细介绍如何使用OpenCvSharp中的hconcat、vconcat函数以及Stitcher类进行图像拼接,并通过具体示例帮助读者理解和掌握这些知识点。 函…

Java生成NetCDF文件

因为需要再Cesium中实现风场粒子效果&#xff0c;网上找了许多项目&#xff0c;大多是通过加载NC文件来进行渲染的&#xff0c;因此了解NC文件又成了一件重要的事。特此记录用java成果生成可在前端渲染&#xff0c;QGIS中正常渲染的NetCDF文件的相关代码&#xff08;有没详细整…

16. 第十六章 类和函数

16. 类和函数 现在我们已经知道如何创建新的类型, 下一步是编写接收用户定义的对象作为参数或者将其当作结果用户定义的函数. 本章我会展示函数式编程风格, 以及两个新的程序开发计划.本章的代码示例可以从↓下载. https://github.com/AllenDowney/ThinkPython2/blob/master/c…

java程序在运行过程各个内部结构的作用

一&#xff1a;内部结构 一个进程对应一个jvm实例&#xff0c;一个运行时数据区&#xff0c;又包含多个线程&#xff0c;这些线程共享了方法区和堆&#xff0c;每个线程包含了程序计数器、本地方法栈和虚拟机栈接下来我们通过一个示意图介绍一下这个空间。 如图所示,当一个hell…

内窥镜系统设计简介

内窥镜系统设计简介 1. 源由2. 系统组成2.1 光学系统2.2 机械结构2.3 电子系统2.4 软件系统2.5 安全性和合规性2.6 研发与测试2.7 用户培训与支持 3. 研发过程3.1 光学系统Step 1&#xff1a;镜头设计Step 2&#xff1a;光源Step 3&#xff1a;成像传感器 3.2 机械结构Step 1&a…

11.泛型、trait和生命周期(上)

标题 一、泛型数据的引入二、改写为泛型函数三、结构体/枚举中的泛型定义四、方法定义中的泛型 一、泛型数据的引入 下面是两个函数&#xff0c;分别用来取得整型和符号型vector中的最大值 use std::fs::File;fn get_max_float_value_from_vector(src: &[f64]) -> f64…

代码随想录-Day31

455. 分发饼干 假设你是一位很棒的家长&#xff0c;想要给你的孩子们一些小饼干。但是&#xff0c;每个孩子最多只能给一块饼干。 对每个孩子 i&#xff0c;都有一个胃口值 g[i]&#xff0c;这是能让孩子们满足胃口的饼干的最小尺寸&#xff1b;并且每块饼干 j&#xff0c;都…

Python中的命名空间和作用域:解密变量的可见性和生命周期

在 Python 中&#xff0c;命名空间&#xff08;Namespace&#xff09;和作用域&#xff08;Scope&#xff09;是重要的概念&#xff0c;它们决定了变量和函数的可见性和生命周期。理解命名空间和作用域是编写高效、可维护代码的关键。 基本语法 命名空间 命名空间是一个存储…

新视野大学英语2 词组 6.16

decide between rival options 在互相竞争的选项中做出选择 chinese imperial general 中国帝国将军 on a raid into enemy territory 深入敌方领土突袭 on a raid into&#xff1a;“在进入……的突袭行动中”。 通常指军事行动中快速、秘密地侵入敌人控制的区域&#xff0c…

oracle打补丁

1.备份 su - grid -c "crsctl status res -t" cat /proc/meminfo | grep HugePagesls -lrt /dev/ls -lrt /dev/sd*ls -lrt /dev/asm*cat /etc/udev/rules.d/asm***df -hmountfree -g/etc/security/limits.conf/etc/hosts/etc/selinux/config /etc/pam.d/system-aut…

vs+qt5.0 使用poppler 操作库

Poppler 是一个用来生成 PDF 的C类库&#xff0c;从xpdf 继承而来。vs编译库如下&#xff1a; vs中只需要添加依赖库即可 头文件&#xff1a;

从MySQL到NoSQL:分析传统关系型数据库与NoSQL数据库的协同

引言 数据库是一个系统,用来管理和存储数据的地方。数据在数据库中以一种结构化的方式组织,这样能更容易地查询和处理数据。 关系型数据库是基于关系模型的数据库,它将数据存储在不同的表中,每个表都有各自的独一无二的主键。表与表之间通过共享的数据项相互关联。像MySQ…

windows11 生产力工具配置

一、系统安装 官方windows11.iso镜像文件安装操作系统时&#xff0c;会强制要求联网验证&#xff0c;否则无法继续安装操作系统&#xff0c;跳过联网登录账号的方式为&#xff1a;按下【shiftF10】快捷键&#xff0c;调出cmd命令窗口&#xff0c;输入命令 OOBE\BYPASSNRO 等…

【博客720】时序数据库基石:LSM Tree的辅助优化

时序数据库基石&#xff1a;LSM Tree的辅助优化 场景&#xff1a; LSM Tree其实本质是一种思想&#xff0c;而具体是否需要WAL&#xff0c;内存表用什么有序数据结构来组织&#xff0c;磁盘上的SSTable用什么结构来存放&#xff0c;是否需要布隆过滤器来加快不存在数据的判断等…

Python笔记 - TOML配置文件

TOML&#xff08;Tom’s Obvious, Minimal Language&#xff09;是一种配置文件格式&#xff0c;旨在比JSON、YAML等格式更易读、更人性化。它使用简洁的语法&#xff0c;能清晰地表达复杂的结构&#xff0c;同时保留良好的可读性。本文将介绍TOML的基本语法&#xff0c;提供代…

【UE5|水文章】在UMG上显示帧率

参考视频&#xff1a; https://www.youtube.com/watch?vH_NdvImlI68 蓝图&#xff1a;

数值分析笔记(二)函数插值

函数插值 已知函数 f ( x ) f(x) f(x)在区间[a,b]上n1个互异节点 { x i } i 0 n \{{x_i}\}_{i0}^{n} {xi​}i0n​处的函数值 { y i } i 0 n \{{y_i}\}_{i0}^{n} {yi​}i0n​&#xff0c;若函数集合 Φ \Phi Φ中函数 ϕ ( x ) \phi(x) ϕ(x)满足条件 ϕ ( x i ) y i ( i …

Apollo9.0 PNC源码学习之Routing模块

路由:Routing模块根据请求生成导航信息 输入: 地图数据请求,包括:开始和结束位置输出: 路由导航信息 Routing navigation information0 前言 文件结构: modules/routing/ ├── BUILD ├── common ├── conf ├── core ├── cyberfile.xml ├── dag ├── …

数据结构01 栈及其相关问题讲解【C++实现】

栈是一种线性数据结构&#xff0c;栈的特征是数据的插入和删除只能通过一端来实现&#xff0c;这一端称为“栈顶”&#xff0c;相应的另一端称为“栈底”。 栈及其特点 用一个简单的例子来说&#xff0c;栈就像一个放乒乓球的圆筒&#xff0c;底部是封住的&#xff0c;如果你想…