| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Python知识库 -> 如何对Excel列快速移动或对调?四种方法给你一点解决问题的灵感 -> 正文阅读 |
|
[Python知识库]如何对Excel列快速移动或对调?四种方法给你一点解决问题的灵感 |
工作中遇到关于excel的一个小小的问题,如下有32行71列数据,现在需要对71个列进行对调,如果是你,你会怎么解决?如果一列一列拖动,可以解决问题但是工作量大容易出错,所以得想个简便的方法。因为列标题恰好是日期,可以通过排序的方式对调,不过好像只有行排序,没有对列进行排序的功能菜单。那怎么办呢? 原数据(图一): 预期效果(图二): 思路一:Excel转置+排序 玩excel很溜的朋友应该能很快想到办法,我可以通过对数据复制、转置粘贴、排序,再复制、转置粘贴,不就好了么?思路是对的,我们来实现一下。 1.将图一表的sheet1中的原数据复制,再转置粘贴到sheet2: 2.对sheet2"时间“列升序排序: 3.将sheet2中的原数据复制,再转置粘贴到sheet3,得到图二。 这样就完成了上面效果啦,是不是相比手动一列一列拖动简单的多呢?看到这里可能大家会吐槽这有什么用?太简单了。实际上我想提供的是解决这么个小小问题的一些思路想法。如果这个数据量再大一点(比如一千行一前列)呢?两次复制粘贴会不会占用空间和时间(你试试会不会卡的要死)?我们可以用PowerBI来不用复制粘贴就实现转置+排序。 思路二:PowerBI转置+反转行 1.导入数据,然后点转置: 2.点击反转行(它专门有个“反转行”的功能): 3. 再次转置: 4. 最后一步,移动最后一列到第一列(因为反转行把“时间”列给掉到后面去了): 可以看到PowerBI的好处是不需要复制粘贴,只需要几次点击就可以完成目的。而且它解决了如果不是可以排列的日期格式数据,也可以通过反转行进行快速排列。在更多数据和非日期数据方面,是不是PowerBI更方便? 然而这样还不够,咱们这个问题是解决了,如果问题的条件又发生变化,比如我需要前三十列对调,后三十列对调,你该怎么解决呢?用上面的方法把数据拆分再合并也可以达到目的。但是如果你会使用Python,就能更加灵活的解决这类问题。 思路三:Openpyxl正向导入,反向输出 1. 导入库和数据
2. 将导入的数据写入一个列表中:
3. 将列表反转对调,再写入到sheet2中: 这样我们就实现了对71个列的对调,但是却把原本的第一列调换到最后一列去了,所以还得再放回来: 4.把”时间“列移动到第一列: 虽然是解决了问题,但是使用了二十三行代码,非常繁琐,如果对python/openpyxl库不熟悉的话可能都懒得用。不过这个好处是什么呢?就在于如果你学会使用openpyxl这个库的语法,你就可以定制绝大部分想实现的Excel的功能,你第一次解决一个问题写代码时比较麻烦,但是解决同类问题只需要改动小小部分就可以实现,而其他工具可能就变得麻烦了;还有个好处是代码一次写成,多次复用,效率大大提高。 还有没有更好方法呢?有! 思路四:pandas列标题对调
看!六行代码搞定,既不需要你复制粘贴,也不需要反复点点点,还不需要写那么多代码,如果问题发生变动只需要改动部分代码,如果数据不能排序也可以使用列表切片的办法随便调换。是不是鲁棒性更强了呢? 把这个小问题复杂化其实也是想将复杂问题简单化,如果你知道解决问题的本质思路,你也了解多种工具,就可以综合多种情况快速解决问题而不会怼着一个工具绕圈子。另外也可以看出,Excel和BI等处理数据的能力很强大,它把绝大部分处理数据的过程都简化成小步骤,通过组合就能实现很多目的,但它限于软件的框架而有局限性,比如数据量小、缺乏程序化;而Python等编程工具的DIY程度就比较高,你可以利用它的语法读写Excel,快速反复调用,而不需要手动重复,所以我比较喜欢用Python来操作Excel实现数据分析和办公自动化。 最后欢迎大家关注我,我是拾陆,搜一搜公众号“二八Data”,更多技术干货持续奉献。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/16 2:48:19- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |