问题
- 一张excel表格,大概1万行,需要录入系统
- 系统每次最多只能录入500行表格数据,一旦超过500行,就会录入失败
- 需要把1万行的数据按照500行分割,形成20个表格,这样才能录入系统
思路
- 使用pandas得到总行数,比如10002行,分割表格的时候,要保留一行表头
- 第一张表,是1-500行,第二张表是 501-1000,以此类推
- 最后一张表应该是1000-10002行,生成的表格数量是10000/500+1,21张
- 生成的表格按照顺序保存到一个目录中
- 写一个函数,可以按照任意指定的分割数量进行分割。
代码实现
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
#按行数分割表格函数
#问题
#1.如果有有一个十万行表格,要录入系统,但是系统每次最多只能录入500行?
#解决问题:
#1.按照指定的行数分割表格
#2.分割出来的表格按照序号命名
import pandas as pd
import os
def splitexcel( file ,num):
file_dir = 'result' #创建目录
if os.path.isdir(file_dir):
os.rmdir(file_dir)
else :
os.mkdir(file_dir)
n = 1
row_list = []
df = pd.dataframe(pd.read_excel( file , sheet_name = 0 ))
row_num = int (df.shape[ 0 ]) # 获取行数
if num > = row_num: #如果分割行数大于总行数,报错
raise exception( 'too much!!' )
try :
for i in list ( range (num,row_num,num)):
row_list.append(i)
row_list.append(row_num) # 得到完整列表
except exception as e:
print (e)
(name,ext) = os.path.splitext( file ) #获取文件名
for m in row_list:
filename = os.path.join(file_dir,name + '-' + str (n) + '.xlsx' )
if m <row_num:
df_handle = df.iloc[m - num:m] #获取n行之前
print (df_handle)
df_handle.to_excel(filename , sheet_name = 'sheet1' ,index = false)
elif m = = int (row_num):
remainder = int ( int (row_num) % num) #余数
df_handle = df.iloc[m - remainder:m] #获取最后不能整除的行
df_handle.to_excel(filename , sheet_name = 'sheet1' , index = false)
n = n + 1
if __name__ = = '__main__' :
file = 'result.xls'
splitexcel( file ,num = 10 )
|
测试效果
一张83行的表格,去除表头,一共82行,按照10行分割,一共要获得9张表格,最后一张表格,应该只有两行,中间的表格,数据必须是连续的,
分割前
分割后
到此这篇关于python使用pandas按照行数分割表格的文章就介绍到这了,更多相关pandas按行分割表格内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!
原文链接:https://blog.51cto.com/u_11555417/3328166