金牌厨师Pandas:听说Excel处理数据分行快得很?

2023-11-11

作者简介
HeoiJin:立志透过数据看清世界的产品策划,专注爬虫、数据分析、产品策划领域。
万物皆营销 | 资本永不眠 | 数据恒真理
CSDN:https://me.csdn.net/weixin_40679090

目录

在这里插入图片描述

一、前言

最近收到一个小朋友(无中生友)发过来的需求,要将多列数据转化成多行数据,并提取指定列的数据。但因为数据结构有点丑,而且数据量大,不好通过excel公式进行清洗,希望我利用python帮他清洗下。那么这位小朋友碰上了什么幺蛾子,接下来一起一探究竟吧。

二、项目准备

  • 语言:Python 3.7
  • IDE:Pycharm
  • 相关库:Pandas、re、xlrd、xlwt

三、项目特色

  • 利用ExcelFile方法读取单个Excel文件中的多个sheets
  • 利用explode方法为dataframe中嵌套的列表解嵌套为多行数据

四、项目需求

拿到样本数据和最终效果图的那一刻,有句话想跟设计表格的大佬说,不知当讲不当讲…各位先品一品这堆数据。

吐槽归吐槽,金牌厨师胖大师表示:“这波问题不大,接下来我要展示我王者水平的操作!”

在这里插入图片描述

五、核心厨具介绍

pandas.DateFrame.explode能将dataframe的嵌套列表拆分成多行,并会复制同一行的其他元素。

方法 参数详解
DataFrame.explode(self, column: Union[str, Tuple]) → ‘DataFrame’ column:要进行操作的列名,可以传入字符串或者元组;
注意列名应该是唯一的,否则会引发ValueError
返回dataframe(如果整个dataframe仅有一列,会自动在转换为series)

六、烹饪开始

6.1 确认烹饪思路

  1. 遍历所有sheet
  2. 筛选出核心的房号、姓名、电话信息
  3. 将信息拼接成为列表
  4. 将列表拆分为多行数据
  5. 输出为csv

6.2 筛选核心食材(获取特定的columns)

观察可知,三个sheets的表头顺序都不一样,如果只利用简单粗暴的切片方式,并不能精准地获取到需要的表头。但庆幸表头名称都相同,派出正则表达式这把利刃便能轻松地完成任务。

def get_new_columns(df):
    '''
    >> 利用正则匹配出目标columns
    >> df.columns=['栋数', '户型', '姓名', '性别', '电话', '房号', '姓名.1', '性别.1', '电话.1', '房号.1','姓名.2', '性别.2', '电话.2', '房号.2']
    >> 当我们的columns重复的时候,pandas会自动帮我们在重复的columns后面加上.编号。
    :param df:
    :return:
    '''
    # 提取columns对应的字段
    pattern_name=r',(姓名.?\d?),'
    pattern_room=r',(房号.?\d?),'
    pattern_phoone=r',(电话.?\d?),'
    # 通过前后增加逗号࿰
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

金牌厨师Pandas:听说Excel处理数据分行快得很? 的相关文章

  • Mac OS 上的诗歌安装失败,显示“should_use_symlinks”

    我正在尝试使用以下命令安装诗歌 curl sSL https install python poetry org python3 但它失败了 但有以下例外 例外 此版本的 python 无法在不使用符号链接的情况下创建 venvs 下面是详
  • Twisted 的 Deferred 和 JavaScript 中的 Promise 一样吗?

    我开始在一个需要异步编程的项目中使用 Twisted 并且文档非常好 所以我的问题是 Twisted 中的 Deferred 与 Javascript 中的 Promise 相同吗 如果不是 有什么区别 你的问题的答案是Yes and No
  • 递归 lambda 表达式可能吗?

    我正在尝试编写一个调用自身的 lambda 表达式 但我似乎找不到任何语法 或者即使它是可能的 本质上我想将以下函数传输到以下 lambda 表达式中 我意识到这是一个愚蠢的应用程序 它只是添加 但我正在探索可以在 python 中使用 l
  • 如何在python 3.7中生成条形码

    我正在使用 python 3 7 为了生成条形码 我尝试使用安装 pyBarcode 库pip install pyBarcode 但它显示以下错误 找不到满足 pyBarcode 要求的版本 来自版本 找不到 pyBarcode 的匹配分
  • Pandas:GroupBy 到 DataFrame

    参考这个关于 groupby 到 dataframe 的非常流行的问题 https stackoverflow com questions 10373660 converting a pandas groupby object to dat
  • 删除 Django 1.7 中的应用程序(和关联的数据库表)

    是否可以使用 Django 1 7 迁移来完全删除 卸载应用程序及其所有跟踪 主要是其所有数据库表 如果没有 在 Django 1 7 中执行此操作的适当方法是什么 python manage py migrate
  • Python 2.7 中的断言对我来说不起作用示例assertIn

    我的 Mac 上安装了 python 2 7 通过在终端中运行 python v 进行验证 当我尝试使用任何新的 2 7 断言方法时 我收到 AtributeError 我看过http docs python org 2 library u
  • Mac OS X 中文件系统的 Unicode 编码在 Python 中不正确?

    在 OS X 和 Python 中处理 Unicode 文件名有点困难 我试图在代码中稍后使用文件名作为正则表达式的输入 但文件名中使用的编码似乎与 sys getfilesystemencoding 告诉我的不同 采取以下代码 usr b
  • Python3.0 - 标记化和取消标记化

    我正在使用类似于以下简化脚本的内容来解析较大文件中的 python 片段 import io import tokenize src foo bar src bytes src encode src io BytesIO src src l
  • Keras:如何保存模型或权重?

    如果这个问题看起来很简单 我很抱歉 但是阅读 Keras 保存和恢复帮助页面 https www tensorflow org beta tutorials keras save and restore models https www t
  • 从扫描文档中提取行表 opencv python

    我想从扫描的表中提取信息并将其存储为 csv 现在我的表提取算法执行以下步骤 应用倾斜校正 应用高斯滤波器进行去噪 使用 Otsu 阈值进行二值化 进行形态学开局 Canny 边缘检测 进行霍夫变换以获得表格行 去除重复行 10像素范围内相
  • Django send_mail SMTPSenderRefused 530 与 gmail

    一段时间以来 我一直在尝试使用 Django 从我正在开发的网站接收电子邮件 现在 我还没有部署它 并且我正在使用Django开发服务器 我不知道这是否会影响它 这是我的 settings py 配置 EMAIL BACKEND djang
  • 如何在 pandas 中使用 read_fwf 跳过空行?

    I use pandas read fwf http pandas pydata org pandas docs stable generated pandas read fwf htmlPython pandas 0 19 2 中的函数读
  • 使用 Pandas 计算 delta 列

    我有一个数据框 如下所示 Name Variable Field A 2 3 412 A 2 9 861 A 3 5 1703 B 3 5 1731 A 4 0 2609 B 4 0 2539 A 4 6 2821 B 4 6 2779 A
  • Mac OSX 10.6 上的 Python mysqldb 不工作

    我正在使用 Python 2 7 并尝试让 Django 项目在 MySQL 后端运行 我已经下载了 mysqldb 并按照此处的指南进行操作 http cd34 com blog programming python mysql pyth
  • 在系统托盘中隐藏 tkinter 窗口 [重复]

    这个问题在这里已经有答案了 我正在制作一个程序来提醒我朋友的生日 这样我就不会忘记祝福他们 为此 我制作了两个 tkinter 窗口 1 First one is for entering name and birth date 2 Sec
  • 在 Django 查询中使用 .extra(select={...}) 引入的值上使用 .aggregate() ?

    我正在尝试计算玩家每周玩游戏的次数 如下所示 player game objects extra select week WEEK games game date aggregate count Count week 但姜戈抱怨说 Fiel
  • 如何与其他用户一起使用 pyenv?

    如何与其他用户一起使用 pyenv 例如 如果我在用户 test 的环境中安装了 pyenv 则当我以 test 身份登录时可以使用 pyenv 但是 当我以其他用户 例如 root 身份登录时如何使用 pyenv 即使你这么做了 我也会s
  • 双击打开 ipython 笔记本

    相关文章 通过双击 osx 打开 ipython 笔记本 https stackoverflow com questions 16158893 open an ipython notebook via double click on osx
  • TKinter 中的禁用/启用按钮

    我正在尝试制作一个像开关一样的按钮 所以如果我单击禁用按钮 它将禁用 按钮 有效 如果我再次按下它 它将再次启用它 我尝试了 if else 之类的东西 但没有成功 这是一个例子 from tkinter import fenster Tk

随机推荐

  • 唐诗

    作者 楚予微茫 链接 https zhuanlan zhihu com p 79798355 来源 知乎 著作权归作者所有 商业转载请联系作者获得授权 非商业转载请注明出处 送杜少府之任蜀州 王勃 城阙辅三秦 风烟望五津 与君离别意 同是宦
  • Android---ImageSpan + SpannableStringBuilder 图文混排解决表情文字高度不一致排版错乱问题(设置padding 行间距依然生效)

    文章目录 前言 一 继承ImageSpan重写绘制方法 二 实践 前言 android图文混排的最常见实现方案就是使用SpannableStringBuilder 比如我们要实现聊天框输入表情的功能就需要用到其实现 但是当我们的icon图标
  • Java多重循环

    一 多重循环的理解 1 多重循环指一个循环语句的循环体中再包含循环语句 又称嵌套循环 2 循环语句内可以嵌套多层循环 3 不同的循环语句可以相互嵌套 语法格式 while 循环条件1 循环语句1 while 循环条件2 循环语句2 do 循
  • 分享人工智能方向优质技术博客

    Machine learning Blogs 想要阅读更多关于人工智能技术博客 请关注微信公众号 人工智能大讲堂 专注人工智能底层数学原理和应用 专栏包括线性代数 概率统计 机器学习 深度学习 线性代数博客汇总 线性代数博客合集 线性代数本
  • 激光雷达Velodyne VLP16在ROS下的使用

    Velodyne VLP16在ROS下的使用 前置条件 Ubuntu 16 04 激光雷达VLP16 ROS kinetic 使用步骤 基础设置 安装驱动 sudo apt get install ros kinetic velodyne
  • 蓝桥杯国赛C++A组B组题解整理(第八、七、六、五、四届)

    写在前面的话19 04 04 今年省赛的结果出的意外得快 有很多小伙伴来和我分享他们进了省一的喜悦 并问我啥时候更新国赛题解 emmm 不是我不想更新 实在是抽不出时间 有缘再更 虽然不更新题解 但是我决定这次提前写一点注意事项吧 省得大家
  • java 24点游戏

    24点纸牌游戏 一 内容 二 步骤 1 算法分析 2 概要设计 3 测试 4 调试 5 心得体会 一 内容 24点游戏是经典的纸牌益智游戏 常见游戏规则 从扑克中每次取出4张牌 使用加减乘除 第一个能得出24者为赢 其中 J代表11 Q代表
  • 分享一个效果很好的ddos压力测试服务网站

    分享一个经测试效果好的ddos压力测试网站 打开网站 http www akddos com 免费注册一个账户即可测试 udp流量最高400G 支持SYN CC DNS等多种模式 套餐自由选择 效果很好 大家可以去试试 网站主要是用来测试自
  • 给定一个整数数组,判断是否存在重复元素。

    存在重复元素 给定一个整数数组 判断是否存在重复元素 如果存在一值在数组中出现至少两次 函数返回 true 如果数组中每个元素都不相同 则返回 false 示例 1 输入 1 2 3 1 输出 true 作者 力扣 LeetCode 链接
  • html动态爱心代码【三】(附源码)

    目录 前言 特效 内容修改 完整代码 总结 前言 七夕马上就要到了 为了帮助大家高效表白 下面再给大家带来了实用的HTML浪漫表白代码 附源码 背景音乐 可用于520 情人节 生日 表白等场景 可直接使用 特效 内容修改 文字区 div h
  • 反卷积层(转置卷积)

    反卷积 deconvolution 不是数字信号处理里面的意义 在深度学习里面应该叫做转置卷积 transposed convolution 又名微步卷积 fractionally strided convolutions 也有叫Backw
  • Qt5开发学习总结(三)——窗口部件的使用(QWidget和QDialog)

    窗口部件 QT提供的默认基类只有QMainWindow QWidget 和QDialog这三种 这三种窗体也是用的最多的 QMainWindow是带有菜单栏和工具栏的主窗口类 QDialog是各种对话框的基类 而他们全部继承自QWidget
  • 力扣简单题合集(带答案)

    1 给定一个整数数组 nums 和一个目标值 target 请你在该数组中找出和为目标值的那 两个 整数 并返回他们的数组下标 你可以假设每种输入只会对应一个答案 但是 数组中同一个元素不能使用两遍 class Solution publi
  • [leetcode 周赛 149] 1155 掷骰子的N种方法

    目录 1155 Number of Dice Rolls With Target Sum 掷骰子的N种方法 描述 思路 代码实现 1155 Number of Dice Rolls With Target Sum 掷骰子的N种方法 描述 这
  • Windows下安装MySQL(详解)

    Windows下安装MySQL MySQL8 0下载链接 https pan baidu com s 1w2TcLGel51jJwJerQneVjg pwd zzkt 提取码 zzkt 也可以选择在官网上下载 1 在百度 其他浏览器也可以
  • Windows环境下nacos的下载与安装

    一 nacos的下载地址 https github com alibaba nacos 根据自己项目配置的版本 下载对应的nacos客户端 windows下载zip安装包 linux下载tar gz包 二 下载解压成功后 修改配置文件D n
  • 达梦中Hibernate的Save问题

    业务逻辑 在原有数据源是mysql的基础上适配达梦时 使用Hibernate的save方法进行保存 save保存后会返回自增主键id的数值 再根据这个返回值来进行updateorsave更新操作 某字段为主键id值 固定字符组成 问题 返回
  • 钢条切割问题——(暴力法(Brute force), Top-down DP演算法,Bottom-up DP演算法)对比

    注意 以下是三合一的代码 如果只想要 暴力法 Brute force https blog csdn net qq 37486501 article details 84844197 Top down DP演算法 https blog cs
  • LeetCode 面试题 04.09. 二叉搜索树序列

    文章目录 一 题目 二 C 题解 一 题目 从左向右遍历一个数组 通过不断将其中的元素插入树中可以逐步地生成一棵二叉搜索树 给定一个由不同节点组成的二叉搜索树 root 输出所有可能生成此树的数组 点击此处跳转题目 示例 1 输入 root
  • 金牌厨师Pandas:听说Excel处理数据分行快得很?

    作者简介 HeoiJin 立志透过数据看清世界的产品策划 专注爬虫 数据分析 产品策划领域 万物皆营销 资本永不眠 数据恒真理 CSDN https me csdn net weixin 40679090 目录 一 前言 最近收到一个小朋友