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

2021-08-05 14:48:28 浏览数 (2)

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是真的能为你省下很多时间!

0 人点赞