专栏首页凹凸玩数据Pandas基础:列方向分组变形

Pandas基础:列方向分组变形

小小明:「凹凸数据」专栏作者,Pandas数据处理高手,致力于帮助无数数据从业者解决数据处理难题。

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

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

首先读取数据:

import pandas as pd

df = 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["年份"] = year
    result.append(split)
result = pd.concat(result, ignore_index=True)
result

结果:

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

简单讲解一下吧:

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

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

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

本文分享自微信公众号 - 凹凸数据(alltodata),作者:小小明

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

原始发表时间:2021-02-05

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • DataFrame(7):DataFrame运算——逻辑运算

    https://alltodata.cowtransfer.com/s/b8aa2f26ca0947

    朱小五
  • 实战 | Python爬取B站柯南弹幕+Gephi梳理主线剧情

    利用Chrome浏览器抓包可知,B站的弹幕文件以XML文档式进行储存,如下所示(共三千条实时弹幕)

    朱小五
  • Python自动化办公 | 同事要我帮忙补写178份Word日报!别闹!

    首先让我们来看看数据样本和输出文档的需求(敏感数据已做和谐处理):原始 excel 文件中有 n 个子表,每个子表为一天的数据,存在无记录和有记录(部门数 ≥ ...

    朱小五
  • 资源 | Feature Tools:可自动构造机器学习特征的Python库

    机器学习越来越多地从人工设计模型转向使用 H20、TPOT 和 auto-sklearn 等工具自动优化的工具。这些库以及随机搜索(参见《Random Sear...

    机器之心
  • 可自动构造机器学习特征的Python库

    机器学习越来越多地从人工设计模型转向使用 H20、TPOT 和 auto-sklearn 等工具自动优化的工具。这些库以及随机搜索(参见《Random Sear...

    刀刀老高
  • 特征工程系列:自动化特征构造

    数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。由此可见,特征工程在机器学习中占有相当重要的地位。在实际应用当中,可以说特征工程是机器学习成功...

    木东居士
  • Android热修复原理解析

    通过上面几个类的关系,和类的查找过程,我们可以发现最终是通过遍历 DexPathList的 dexElements数组进行类的查找加载,当找到类就返回;

    用户1205080
  • 用户贷款风险预测:Stacking模型融合

    近7万贷款用户的基本身份信息、消费行为、银行还款等数据信息,需要参赛者以此建立准确的风险控制模型,来预测用户是否会逾期还款。

    机器学习AI算法工程
  • 关于WAS当中FFDC报告error in opening zip file剖析及解决 博客分类: Java Strutslog4jIBM

    关于WAS当中FFDC报告java.util.zip.ZipException: error in opening zip file剖析及解决

    阿敏总司令
  • Google I/O 之 Android App Bundles 是个啥

    用户1907613

扫码关注云+社区

领取腾讯云代金券