太强了,1行python代码干了妹子一天的工作

举报
Python小二 发表于 2021/07/15 22:31:56 2021/07/15
【摘要】 事情是这样的,元旦前有朋友向我寻求帮助,吐槽老板在放假前给他安排一个苦逼的差事,想问问我能不能帮个忙,要不然假期都过不好了 工作具体内容如下,主要是想把一个二维表格转成一维表格,如下图(表格为替代品): 于是我马上想到了pandas,想着这么强大的函数肯定有这个功能,于是我开始翻阅资料,没想到还真找到了,而且仅用三行代码就搞定了,惊的朋友直呼pyth...

事情是这样的,元旦前有朋友向我寻求帮助,吐槽老板在放假前给他安排一个苦逼的差事,想问问我能不能帮个忙,要不然假期都过不好了

工作具体内容如下,主要是想把一个二维表格转成一维表格,如下图(表格为替代品):

于是我马上想到了pandas,想着这么强大的函数肯定有这个功能,于是我开始翻阅资料,没想到还真找到了,而且仅用三行代码就搞定了,惊的朋友直呼python牛批

下面个大家详细介绍一下整个过程

1.正确读取表格

首先按照传统的方式读表格:


   
  1. import pandas as pd
  2. data1 = pd.read_excel('高中生数量.xlsx')
  3. data1

发现索引列没有被识别,产生了Unnamed: 0列,所以我们应该把第一列设置为索引列,代码如下:


   
  1. import pandas as pd
  2. data1 = pd.read_excel('高中生数量.xlsx',index_col=0)  #index_col用来设置索引列
  3. data1

这样就正常读取并识别表格了

2.重置索引

这一步主要是将索引列重置,变为普通列,便于下步,代码如下


   
  1. data2=data1.reset_index()
  2. data2

可以发现,之前的索引列编程‘index’列了

3.将列名转换为列数据

这一步主要用到pandas的melt函数,melt是逆转操作函数,可以将列名转换为列数据(columns name → column values),重构DataFrame,用法如下:

pandas.melt(frame, id_vars=None, value_vars=None, var_name=None, value_name='value', col_level=None)

  

参数解释:


   
  1. frame:要处理的数据集;
  2. id_vars:不需要被转换的列名;
  3. value_vars:需要转换的列名,如果剩下的列全部都要转换,就不用写了;
  4. var_name和value_name是自定义设置对应的列名;
  5. col_level :如果列是MultiIndex,则使用此级别。

我们把'index'列保留,并把转换后的列命名为'year',value命名为'stu_num':


   
  1. data3=data2.melt(id_vars='index', var_name='year',value_name='stu_num')
  2. data3

 

4.把第一列设置为索引列

为了防止保存后的表格带有数字索引,需要把第一列设置为索引列:


   
  1. data4=data3.set_index('index')
  2. data4

 

5.保存表格

data4.to_excel('转换后表格.xlsx')

  

大功告成,上述代码可以用1行代码搞定:

data=data.reset_index().melt('index', var_name='col').set_index('index')

  

是不是很强悍!

一起感受一下妹子的夸赞吧:

幸福就是这么简单,在这里哥想说一句,不是哥优秀,而是python太强大,哈哈!

 

文章来源: ityard.blog.csdn.net,作者:程序员野客,版权归原作者所有,如需转载,请联系作者。

原文链接:ityard.blog.csdn.net/article/details/113155401

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。