前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python他不香吗?四、五行代码就能搞定几百份表格的拆分!

Python他不香吗?四、五行代码就能搞定几百份表格的拆分!

作者头像
Python与Excel之交
发布2021-08-05 14:48:28
7790
发布2021-08-05 14:48:28
举报
文章被收录于专栏:Python与Excel之交

Hi~大家好!

我们经常会在工作中遇见,类似下图中的表格(原始表格共计5136条数据),上级要求你将品名列的商品筛选出来,并按照“品名+.xlsx”的格式单独保存为一个exce工作簿,或者以品名为名保存为多个工作表,这样数据少了还好说,如果数据量大了,那还不得累得半死!

业务需求:

  • 品名列的商品取出来,相同的存储在同一个工作表或者工作簿中。

代码实现

导入模块和文件:

代码语言:javascript
复制
import pandas as pd
df = pd.read_csv('价格.csv')

本文关键步骤是通过两个方法实现的,两个方法会分别实现如何取值保存为工作表以及工作簿;而关键步骤代码量最多不会超过三行,最少的只有两行两个方法其实差不多,差别只函数在于两个函数。

unique函数

第一种方法是利用unique函数。unique函数是以数组形式返回列的所有唯一值,也就是相同的两个值只返回一个。

保存为工作表:

代码语言:javascript
复制
with pd.ExcelWriter('价格总表.xlsx') as writer:
    for i in df['品名'].unique():
     # 用unique()取出的唯一值创建工作表,当品名与唯一值相同时,保存在相应的工作表
        df[df['品名'] == i].to_excel(excel_writer=writer, sheet_name=i, index=False)

同理,保存为工作簿:

代码语言:javascript
复制
for i in df['发布日期'].unique():
    df[df['发布日期'] == i].to_excel(f'./商品每日价格详表/{i}.xlsx', sheet_name=i, index=False)

groupby函数

第二种方法是利用groupby()函数。groupby()函数主要的作用是进行数据的分组以及分组后进行运算,本文只要用到groupby()函数的分组功能。

代码语言:javascript
复制
# 保存为工作表:
with pd.ExcelWriter('价格总表1.xlsx') as writer:
  # i为品名唯一值,e为数据分组
     for i, e in df.groupby('品名'):
         e.to_excel(excel_writer=writer, sheet_name=i, index=False)

# 保存为工作簿:
for i, e in df.groupby('品名'):  
    e.to_excel(f'./商品每日价格详表/{i}.xlsx', sheet_name=i, index=False)

下图i为红色方框内的品名,e是以唯一的品名进行分好的组:

运行程序后,保存的工作表:

保存好的工作表,一共416个工作簿:

我们可以看到,只需要四、五行代码即可拆分416个工作表和工作簿,而关键代码也就两三行;如果是手动的进行拆分,那还不知道拆到何年何月,所以python是真的能为你省下很多时间!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-03-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python与Excel之交 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档