需求:把一个excel大文件kwd.xlsx按照指定的行数(600行)进行分割,思路如下:
1、读取excel,获取到总行数rows(不含表头)
2、指定行数split_num,计算rows/split_num并向下取整,得出能按标准分割的次数value
3、按照标准分割次数计算能占用的总行数 rows_format = value*split_num
4、根据总行数总行数 rows_format生成二维列表,列表的元素依次为[0,split_num],[split_num,split_num+split_num]...
5、循环列表,利用dataframe切片(末端不包含)来依次获取固定数据写入到excel
6、最后把剩余的行数并写入
tips:
1、切片是末端不包含的
2、写入excel记得把index参数设为False,否则就把索引也写入了
代码如下:
# -*- coding: utf-8 -*-
import pandas as pd
import math
df = pd.read_excel('kwd.xlsx')
rows,cols = df.shape # 获取行数列数,默认第一列表头不算行数
split_num = 600 # 指定分割行数
value = math.floor(rows/split_num) # 标准分割次数
rows_format = value*split_num # 标准分割所占用总行数
new_list = [[i,i+split_num] for i in range(0,rows_format,split_num)]
# 标准行数文件
for i_j in new_list:
i,j = i_j
excel_small = df[i:j]
# index为False,否则就把行索引写入了
excel_small.to_excel('kwd_{0}_{1}.xlsx'.format(i,j),index=False)
# 最后分割出的文件
df[rows_format:].to_excel('kwd_last.xlsx')