作者:小小明

刚才碰到一个非常简单的需求:

但是我发现大部分人在做这个题的时候,代码写的异常复杂。所以我建议你也不要直接看我的代码,而是先思考一下,你会怎么解决这个问题。

首先读取数据:

import pandas as pddf = pd.read_excel("练习.xlsx", index_col=0)
df

结果:

为了后续处理方便,我将不需要参与分组的第一列事先设置为索引。

groupby分组相信大部分读者都使用过,但一直都是按行分组,不过groupby不仅可以按行分组,还可以按列进行分组。

完整处理代码:

result = []
for year, split in df.groupby(df.columns.str[:4], axis=1):split.rename(columns=lambda s: s[5:], inplace=True)split.reset_index(inplace=True)split["年份"] = yearresult.append(split)
result = pd.concat(result, ignore_index=True)
result

结果:

可以看到,非常简单,仅8行以内的代码已经解决这个问题,剩下的只需在保存到excel时设置一下单元格格式即可,具体设置方法可以参考:

Pandas指定样式保存excel数据的N种姿势

地址:https://blog.csdn.net/as604049322/article/details/111829106

简单讲解一下吧:

df.columns.str[:4]

结果:

Index(['2018', '2019', '2020', '2018', '2019', '2020'], dtype='object')

截取每列列名前4个字符,传入groupby即可作为分组依据,axis=1则指定了groupby按列进行分组而不是默认的按行分组。

split.rename(columns=lambda s: s[5:], inplace=True)

表示对分组后的结果去除列名的前5个字符。

split.reset_index(inplace=True)

表示还原索引为普通的列。

split["年份"] = year

将年份添加到后面单独的一列。

总之这个问题非常简单,相信大部分读者在看到代码后已经秒懂。

Pandas基础|列方向分组变形相关推荐

  1. pandas基础(part4)--排序/分组/合并

    学习笔记,这个笔记以例子为主. 开发工具:Spyder 文章目录 pandas排序 按行标签进行排序 按列标签进行排序 按某列值排序 举个例子 pandas分组 将数据拆分成组 迭代遍历分组 获得子分 ...

  2. python中多个条件求值怎么算,如何使用python pandas对列进行分组并按条件计算值?...

    Input: df=pd.DataFrame({ 'BusId':['abc1','abc2','abc3','abc1','abc2','abc4'], "Fair":[5,6, ...

  3. python分组求和_Python学习笔记之pandas索引列、过滤、分组、求和功能示例

    本文实例讲述了Python学习笔记之pandas索引列.过滤.分组.求和功能.分享给大家供大家参考,具体如下: 前面我们已经把519961(基金编码)这种基金的历史净值明细表html内容抓取到了本地, ...

  4. Python数据分析入门之pandas基础总结

    Pandas--"大熊猫"基础 Series Series: pandas的长枪(数据表中的一列或一行,观测向量,一维数组...) Series1 = pd.Series(np.r ...

  5. Python科学计算之Pandas基础学习

    Python科学计算之Pandas基础学习 导入Pandas 我们首先要导入我们的演出明星--Pandas. 这是导入Pandas的标准方式.显然,我们不希望每时每刻都在程序中写'pandas',但是 ...

  6. Pandas基础-利用python进行数据分析

    Pandas入门 git地址:https://github.com/codebysandwich/DataScience/tree/master/pandas pandas是数据分析时主要的工具,经常 ...

  7. pandas基础操作大全之数据合并

    在pandas 基础操作大全之数据读取&清洗&分析中介绍了pandas常见的数据处理操作,现在继续对pandas常用的数据合并操作做下介绍,便于大家快速了解,也方便后续需要时快速查询. ...

  8. Numpy与Pandas基础

    Numpy与Pandas基础 Cyczz 计算机小白 ​关注他 1 人赞同了该文章 本文包括: 一维数据分析 二维数据分析 一.一维数组 Numpy的一维数组(array) 创建一个一维数组,参数传入 ...

  9. 【Python】Pandas基础:结构化数据处理

    python:Pandas基础:结构化数据处理 目录: 文章目录 @[toc] 一 pandas及其重要性 二 pandas的数据结构介绍 1 Series 2 DataFrame 3 索引对象 三 ...

  10. pandas 第二章 pandas基础

    第二章 pandas基础 import numpy as np import pandas as pd import xlrd 在开始学习前,请保证pandas的版本号不低于如下所示的版本,否则请务必 ...

最新文章

  1. 关于虚拟机vmware共享虚拟网卡上网
  2. 京东战当当,出版商“被”洗牌
  3. python-json
  4. 关于微信分享的一些心得之recommend.js(直接复制就行)
  5. scrapy 中不同页面的拼接_scrapy使用技巧总结
  6. unity获取电磁笔压感_【WPF】获取电磁笔的压感
  7. 百面机器学习 #3 经典算法:01-3 核函数支撑向量机SVM
  8. android 图片上传java,php服务器
  9. 一个VSCode插件实现软妹音程序员鼓励师24小时在线,还能吐槽PM
  10. linux下开发51单片机
  11. Service(服务)之 Local Service(本地服务)
  12. 如何将苹果手机中的M4A音乐转换为MP3格式
  13. AutoCAD.NET API Lectures
  14. python sklearn K-Mearns---实例——消费水平
  15. Selenium登录百度贴吧跳过图片验证的两种操作
  16. 基于QT ffmpeg的动态桌面壁纸
  17. Maven 入门教程
  18. sql语句 DATE_FORMAT的使用
  19. Revit2016二次开发配置
  20. 如何把腾讯微博关闭 腾讯微博的关闭方法

热门文章

  1. 智能药盒 树莓派与Arduino实现药板自助取药
  2. 图像文字识别:Python批量识别图片中的文字并自动改名
  3. There's code using JDBC based datastore and not disposing them和threadLocal多次访问时,有的时候会访问不到
  4. 软件测试自动化面试题(含答案)
  5. 软件测试功能测试全套常见面试题【功能测试-零基础】必备4-1
  6. 硬件工程师岗位应聘为什么都要求精通CC++呢,这其中有什么说法吗
  7. 奥西750服务器系统,奥西TDS750驱动
  8. excel把多个工作表合并
  9. Linux下制作动图的软件,GIF制作教程 | 如何制作高清动图_什么值得买
  10. K3 CLOUD计划方案-集中计划与协同计划的区别