专栏首页Python与Excel之交用14行python代码解决粉丝填表问题~

用14行python代码解决粉丝填表问题~

PS:因误删了以前攒下来的想法、思路和内容,导致断更许久,目前只找回想法和思路,内容要重新写,可能更文的速度还是会慢。

前阵子有位粉丝拿着我以前写的填表程序来问我,说我这代码不太行,我心想怎么可能不行呢,然后我一波操作下来,发现确实不行,准确的说,是不适用他的需求。具体哪里不适用,我们后面会讲!

需求讲解

我们先来看一下他发的示例材料:

合同信息数据

而前面说的不适用可以从下图中的产品信息得知,他有些是需要插入多条数据的,而以前的程序只适用插入一条数据。

合同模板

粉丝需求:

1、从合同信息数据中取出35-161行数据,具有相同的合同编号的放在同一工作簿,然后一一填入合同模板相应的位置中。2、生成以合同编号商标型号工厂为名的excel工作簿,各个字段之间需要加入空格

实现逻辑

整个需求的实现逻辑可以分为以下 4 步:

  • 取出35-161行数据
  • 匹配相同的合同编号
  • 把数据填入表格中
  • 生成excel文件

实现这4步并不难,下面我开始一步步实现。

代码实现

用的库是我们的老熟人了:

import pandas as pd
import openpyxl

还没安装的可以用pip命令安装,基本都能安装完成:

pip intsall 库名

取出指定行-iloc函数

实现取出35-161行数据的需求,用到的是pandas内置函数:iloc,iloc函数主要通过索引行获取数据,只要区别loc函数。

举个例子:

mydict = [{'a': 1, 'b': 2, 'c': 3, 'd': 4},
          {'a': 100, 'b': 200, 'c': 300, 'd': 400},
          {'a': 1000, 'b': 2000, 'c': 3000, 'd': 4000 }]
df = pd.DataFrame(mydict)
df

示例

df.iloc[0:2]

示例结果

本文只要通过切片索引取得区间列,iloc函数中还有其它操作,大家可以自行研究。

据于此,我们可以使用lioc函数快速取出合同信息数据中的35-161行数据:

df = pd.read_excel(r"D:\数据.xlsx", header=1).iloc[35:161]  

取出数据时需要把header选用工作表中第二行作为标题行,因为在工作表中第一行的标题并不符合我们的操作需求:

说明

取出相同的合同编号-unique函数

想取出相同的合同编号,只用unique函数是不行的,unique函数的作用是取出一列中的唯一值,以前在拆分工作表中也说过,这里就不再演示。

这里直接用循环遍历‘合同编号’列,取出唯一值,再通过==判断内容是否与唯一值相同,相同的会放到一起:

for o in df['合同编号'].unique():
    wb = openpyxl.load_workbook(r"D:\模板.xlsx")
    ws = wb['内合同']
    x = df[df['合同编号'] == o]

函数使用结果

填表并保存

把数据填入表格中并不难,但需要注意的是同个合同编号,里面会有多条数据,所以单元格的行坐标是需要变动的:

for p, t, b, c in zip(range(len(x)), x['商标'], x['型号'], x['工厂']):
    lists = ['k2', f'E{7 + p}', f'F{7 + p}', f'G{7 + p}', f'H{7 + p}', f'I{7 + p}', f'L{7 + p}']
    title = ['合同编号', '型号', '颜色', '规格', '数量','鞋子单价', '货号']
    ws.title = str(o)
    for i in range(len(lists)): 
     # 填入表格
        ws[lists[i]].value = [i for i in x[title[i]]][p]
        # 命名
        wb.save("{} {} {} {}.xlsx".format(o, t, b, c))

运行代码即可得到各个合同编号相应的合同:

结果excel文件

相应的内容也完美的插入到相应的单元格中:

成品合同

至此,我们就成功利用Python解决了粉丝的填表需求,实现了解放双手。

本文分享自微信公众号 - Python与Excel之交(Yi-Python-Excel),作者:锋小刀

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2021-10-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python|画出一个300像素的十字架

    在python的众多第三方库中使用turtle库可以很好的解决大部分有关于绘制图形的问题。

    算法与编程之美
  • 抖音开放平台用户授权获取用户的粉丝统计和短视频数据

    最近有朋友问起我有没有做过抖音开放平台,让我有了些思考,其实之前做过的。虽然抖音APP很火,但是毕竟不像微信开放平台那样,已沉淀多年,基本上每个API只要肯用心...

    悟空码字
  • 11位粉丝留言给我的11种入门Python与算法的方法

    对于Python 入门,记得应该是看廖雪峰老师的教程,当时看的还是2的版本,现在已经更新了3的版本,具体就是边看边敲代码,加深印象,后面就是多练习,所谓熟能生巧...

    double
  • 许嵩粉丝地域分布热力图,看看你的爱豆受到哪些地方的人喜欢

    这次我们想绘制一个歌手许嵩的粉丝地域分布的热力图。我们通过对网易云音乐网站爬虫,获取了所有粉丝的信息,包括所在地区。然后将这些地区按照关注人数通过热力图的形式,...

    HuangWeiAI
  • C#开发微信公众平台-就这么简单(附Demo)

      最近公司在做微信开发,其实就是接口开发,网上找了很多资料,当然园友也写了很多教程,但都是理论说了一大堆,实用指导或代码很少。如果你自己仔细研究下,其实就那么...

    庞小明
  • 答粉丝问|用冒泡对txt文本里的英文字串排序

    根据现有条件,笔者作本文回答粉丝疑问,并更改条件如下:如何用python实现将一个储存了很多英文字符串的txt文档重新以首字母的顺序排列好。

    算法与编程之美
  • 手把手教你用Python来模拟绘制高中物理中平抛运动过程中的实线抛物线(附源码)

    也就是说需要实线进行作图。下图是粉丝的提问题目,可以看看需求,其实就是需要用Python进行实现。

    Python进阶者
  • ❤️【python表白神器】手把手教你用代码浪漫追求对象!❤️(附完整源码+讲解)

    跟着我做,做成功就去表白,不介意的话表白成功给我打个赏。第一步是制作网站;第二步是部署网站,第三步是二维码制作。所有源码我都给了大家,如果你是小白,中途遇到不会...

    川川菜鸟
  • 教你搭建微信公众号自动答复机器人

    昨天我们的文章中说到:使用图灵机器人作为应答机器人可以满足要求,但是每天的回复条数在不花钱的情况下只能有100条。对于我这样贫困线人口怎么可能每个月花费...

    菜鸟小白的学习分享
  • UnicodeEncodeError: 'gbk' codec can't encode character解决方法

    其实问题的关键点就是在于编码和解码的问题,首先要确定网站的编码方式,剩下的就是自己电脑中的Pycharm编码设置的问题了。一般来说,苹果机默认就是utf...

    Python进阶者
  • 用Python开源机器人和5美元,我在Instagram上搞到了2500个真粉儿

    大数据文摘
  • 「docker实战篇」python的docker- 多设备端并发抓取抖音粉丝数据(23)

    PS:调试过程中,夜神模拟器,appium,python代码插件没有问题的话,程序在运行过程中出现的最多的问题还是xpath定位的问题,对于python的代码其...

    IT架构圈
  • 手把手教你用Python来模拟绘制自由落体运动过程中的抛物线(附源码)

    当某个物体以初速度v水平抛出,其轨迹为一条抛物线,模拟绘制这条抛物线。用高中物理知识,我们肯定可以轻易实现,但是今天我们需要用Python进行实现,稍微...

    Python进阶者
  • 爬取11088个知乎专栏,打破发现壁垒

    上回我用Gephi绘制了知乎374名10万+关注的大V间相互关注情况,因为涉及25090条关注数据,最后成果图不算理想,但也能简单窥见大V生态圈的面貌,详情见于...

    古柳_DesertsX
  • 手把手教你使用openpyxl库从Excel文件中提取指定的数据并生成新的文件(附源码)

    这个问题看似简单,直接用Excel中的筛选就可以了。诚然,数据筛选,之后扩展行确实可以做到,针对一个或者两个或者10位数以下的Excel文件,我们尚且可...

    Python进阶者
  • 为了知道胡歌粉丝的男女比率,爬了三百万微博数据

    、最近偶然间看到一条新闻,标题是:“胡歌作为一个男性明星,男粉丝比女粉丝还多,这不科学!”

    小歪
  • 「docker实战篇」python的docker-抖音appium模拟滑动操作(22)

    2.完全进去后,左上角有个放大镜的窗口,点击搜索框,输入抖音ID(191433445)

    IT架构圈
  • Python|奇/偶数倒数求和之循环与递归的奥秘

    编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数1/1+1/3+...+1/n,输出结果示例:

    算法与编程之美
  • 什么?requests爬虫库明明安装成功了,为啥用不了?

    白天见鬼,明明把requests库都顺利安装上了,但是不论怎么导入都是失败,真是奇怪,对于新手来说实在是太不友好了。小编想起来一个月之前,还有一个叫【宋...

    Python进阶者

扫码关注云+社区

领取腾讯云代金券