使用pandas读取表格数据并进行单行数据拼接的详细教程


Posted in Python onMarch 03, 2021

业务需求

一个几十万条数据的Excel表格,现在需要拼接其中某一列的全部数据为一个字符串,例如下面简短的几行表格数据:

id code price num
11 22 33 44
22 33 44 55
33 44 55 66
44 55 66 77
55 66 77 88
66 77 88 99

 现在需要将code的这一列用逗号,拼接为字符串,并且每个单元格数据都用单引号包含,需要拼接成字符串'22','33','44','55','66','77',这样的情况,我们需要怎么处理呢?当然方式有很多……

多行文本批量处理

有的时候,我们会遇到需要同时处理多行文本的情况,很多文本编辑器都支持批量操作多行文本,这里我主要说一下Sublime Text,下面是操作的快捷键,有需要的可以尝试用一下,确实挺方便的。

  • 选中需要操作的多行,按下Ctr+Shift+L即可同时编辑这些行
  • 鼠标选中文本,反复按CTRL+D即可继续向下同时选中下一个相同的文本进行同时编辑
  • 鼠标选中文本,按下Alt+F3即可一次性选择全部的相同文本进行同时编辑

如何节省效率

在工作中,可能会存在一些表格数据处理的情况,比如运营给你一个表格,表格里有类似:订单号呀、产品ID啊、商品SKU等,需要你协助导出这些数据里的明细数据以便他们做分析用,一两次,我们可以快速用上面的方式处理,但是这种方式对于大文本的处理可能会存在卡顿的情况,操作效率较低,如果小文本的话,那么还是很方便的。
如果多次遇到这种情况,是否想要做成一个工具来快速处理呢,也就是,这种批量拼接同样格式的数据,我们可以写一个小工具来实现,即快速又省事,可以大大减少重复的工作消耗。

pandas读取表格数据并处理

这我们使用Python的pandas模块来读取表格指定某列的数据,再按照我们的拼接格式进行循环处理,最终把拼接的字符串写入文本文件中,方便保留和使用拼接的数据。

sheet = pandas.read_excel(io=file_name, usecols=[line_num])
data = sheet.values.tolist()
str_data = ''
# 循环处理数据
print_msg('已获取列数据条数[' + str(len(data)) + '],开始处理数据……')
for x in range(len(data)):
  if str(data[x][0]) != 'nan':
    str_data += "'" + str(data[x][0]) + "',"

完整源码

因为脚本需要多次使用,并且针对不同文件的不同列,所以,我们采用接受关键参数的形式,可以不改动任何代码,就可以直接使用此脚本来完整我们的数据拼接,同时,我们还可以使用pyinstaller模块来将脚本进行打包成exe的window可执行文件,使其在无Python的运行环境中也可以使用,打包命令为:pyinstaller -F -i favicon.ico join_excel_data.py,我已有打包的上传到交友网站Github上,大家有兴趣的话,可以点击查看哦,交个朋友地址:github.com/gxcuizy

#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""
拼接Excel表格单行数据,并写入文本
author: gxcuizy
time: 2021-03-01
"""

import pandas
import random
import os
import time


def print_msg(msg=''):
  """打印信息"""
  now_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
  print('[' + now_time + '] ' + msg)


# 程序主入口
if __name__ == "__main__":
  # 获取传入参数
  file_name = input('请输入当前目录下的表格文件名(例如“01.xlsx”):')
  line_num = input('请输入要拼装的数据第几列(例如“1”):')
  # 判断文件是否存在
  if os.path.exists(file_name) == False:
    print_msg('文件不存在')
    os.system("pause")
    exit(0)
  # 判断输入的行数是否为数字
  if line_num.isdigit() == False:
    print_msg('请输入列数的数字')
    os.system("pause")
    exit(0)
  try:
    # 获取表格数据
    print_msg('开始获取文件[' + file_name + ']的第[' + str(line_num) + ']列数据')
    line_num = int(line_num) - 1
    sheet = pandas.read_excel(io=file_name, usecols=[line_num])
    data = sheet.values.tolist()
    str_data = ''
    # 循环处理数据
    print_msg('已获取列数据条数[' + str(len(data)) + '],开始处理数据……')
    for x in range(len(data)):
      if str(data[x][0]) != 'nan':
        str_data += "'" + str(data[x][0]) + "',"
    # 写入文本文件
    print_msg('数据处理完毕,开始写入……')
    random_num = random.randint(1000, 9999)
    with open('str_' + str(random_num) + '.txt', 'w') as f:
      f.write(str_data.strip(','))
    print_msg('数据写入完毕.')
  except Exception as err_info:
    # 异常信息
    print_msg(str(err_info))
  # 防止exe程序执行结束闪退
  os.system("pause")

到此这篇关于使用pandas读取表格数据并进行单行数据拼接的详细教程的文章就介绍到这了,更多相关pandas读取表格并拼接内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python脚本实现DNSPod DNS动态解析域名
Feb 14 Python
Python利用Beautiful Soup模块搜索内容详解
Mar 29 Python
Python中模块pymysql查询结果后如何获取字段列表
Jun 05 Python
python中单下划线_的常见用法总结
Jul 10 Python
PyTorch搭建多项式回归模型(三)
May 22 Python
numpy中的ndarray方法和属性详解
May 27 Python
Python人工智能之路 jieba gensim 最好别分家之最简单的相似度实现
Aug 13 Python
从训练好的tensorflow模型中打印训练变量实例
Jan 20 Python
Java多线程实现四种方式原理详解
Jun 02 Python
查看keras各种网络结构各层的名字方式
Jun 11 Python
高考考python编程是真的吗
Jul 20 Python
Python自动化测试中yaml文件读取操作
Aug 20 Python
用gpu训练好的神经网络,用tensorflow-cpu跑出错的原因及解决方案
Mar 03 #Python
神经网络训练采用gpu设置的方式
Mar 03 #Python
解决TensorFlow训练模型及保存数量限制的问题
Mar 03 #Python
使paramiko库执行命令时在给定的时间强制退出功能的实现
Mar 03 #Python
python上下文管理的使用场景实例讲解
Mar 03 #Python
pip install命令安装扩展库整理
Mar 02 #Python
python实现杨辉三角的几种方法代码实例
Mar 02 #Python
You might like
基于文本的搜索
2006/10/09 PHP
php快速url重写 更新版[需php 5.30以上]
2010/04/20 PHP
Zend Framework缓存Cache用法简单实例
2016/03/19 PHP
PHP登录验证码的实现与使用方法
2016/07/07 PHP
根据分辨率不同,调用不同的css文件
2006/07/07 Javascript
验证用户是否修改过页面的数据的实现方法
2008/09/26 Javascript
javascript window对象属性整理
2009/10/24 Javascript
JavaScript操作XML 使用百度RSS作为新闻源示例
2012/02/17 Javascript
JS获取select的value和text值的简单实例
2014/02/26 Javascript
jQuery学习笔记之jQuery中的$
2015/01/19 Javascript
使用AngularJS实现表单向导的方法
2015/06/19 Javascript
easyui Draggable组件实现拖动效果
2015/08/19 Javascript
利用Angularjs和原生JS分别实现动态效果的输入框
2016/09/01 Javascript
js移动焦点到最后位置的简单方法
2016/11/25 Javascript
jquery自定义插件结合baiduTemplate.js实现异步刷新(附源码)
2016/12/22 Javascript
Angularjs上传图片实例详解
2017/08/06 Javascript
Vue在页面右上角实现可悬浮/隐藏的系统菜单
2018/05/04 Javascript
jQuery实现轮播图及其原理详解
2020/04/12 jQuery
在vue中高德地图引入和轨迹的绘制的实现
2019/10/11 Javascript
浅析Python中的getattr(),setattr(),delattr(),hasattr()
2016/06/14 Python
使用python语言,比较两个字符串是否相同的实例
2018/06/29 Python
python实现上传文件到linux指定目录的方法
2020/01/03 Python
解决Jupyter因卸载重装导致的问题修复
2020/04/10 Python
Python requests模块session代码实例
2020/04/14 Python
澳大利亚第一的设计师礼服租赁网站:GlamCorner
2017/08/13 全球购物
澳大利亚最受欢迎的女士度假服装:Kabana Shop
2020/10/10 全球购物
金额转换,阿拉伯数字的金额转换成中国传统的形式如:(¥1011)-> (一千零一拾一元整)输出
2015/05/29 面试题
Servlet如何得到客户端机器的信息
2014/10/17 面试题
怎么写有吸引力的自荐信
2013/11/17 职场文书
会计专业求职信
2014/08/10 职场文书
医生个人自我剖析材料
2014/10/08 职场文书
教师个人事迹材料
2014/12/17 职场文书
借款民事起诉状范文
2015/05/19 职场文书
Python 使用dict实现switch的操作
2021/04/07 Python
python使用pywinauto驱动微信客户端实现公众号爬虫
2021/05/19 Python
Win11 引入 Windows 365 云操作系统,适应疫情期间混合办公模式:启动时直接登录、模
2022/04/06 数码科技