|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
各位大神,最近在用xlwings处理Excel几万行数据时,用for循环读取,计算,复制数据的运算时间比较长,处理一个Excel需要花费几分钟。
求助各位大神,帮忙看看有没有运算更快速的方法
1.源Excel数据读入Python,然后新建一个工作表
2.新建工作表的前面5行都留为空白,新工作表中只放数据值,其他信息都不需要
2.把源数据中的A列所有数据除以1000后都放在新建的工作表第1列,和源数据一样,数据值在新工作表中从第六行开始放
3.源数据中的C列,直接copy放在新工作表的第2列,第六行开始放
4.源数据中的G列,直接copy放在新工作表的第3列,第六行开始放
5.源数据中的D,E F列,每列的数据做处理后,放入新工作表的 4 ,5 ,6列,第六行开始放;
处理方法: 源数据第六行单元格数据直接放入新工作表;
新工作表第7行单元格数据 等于 新工作表第6行单元格数据值 + 源数据第7行单元格数据值
新工作表第8行单元格数据 等于 新工作表第7行单元格数据值 + 源数据第8行单元格数据值
依此类推,直到全部完成(之前用xlwings for循环处理,运算速度很慢)
6. 源数据的H列,每列的数据做处理后,放入新工作表的 7列,第六行开始放;(H列的第四行名称DN 和 G列4行的名称相同,都是DN)
处理方法,同上: 源数据第六行单元格数据直接放入新工作表;
新工作表第7行单元格数据 等于 新工作表第6行单元格数据值 + 源数据第7行单元格数据值
新工作表第8行单元格数据 等于 新工作表第7行单元格数据值 + 源数据第8行单元格数据值
依此类推,直到全部完成(之前用xlwings for循环处理,运算速度很慢)
以上6个过程,之前用xlwings操作都实现过,但是运行时间等太久。麻烦各位帮忙看看,是不是用pandas或者其他库运行效率会更高
用你的数据试了一遍,pandas 全部完成只需要26秒左右。
data=pd.read_excel('e:\cjh\Documents\python\OriginalData.xlsx',header=None)
data.rename(columns={0:'A',1:'B',2:'C',3:'D',4:'E',5:'F',6:'G',7:'H'},inplace=True)
df=pd.DataFrame(columns=data.columns)
df1=data[0:5]
df['A']=data['A'].iloc[5:]/1000
df['B']=data['C']
df['C']=data['G']
df['D'][5]=data['D'][5]
df['E'][5]=data['E'][5]
df['F'][5]=data['F'][5]
df['G'][5]=data['H'][5]
for i in range(6,len(data)):
df['D'][i]=df['D'][i-1]+data['D'][i]
df['E'][i]=df['E'][i-1]+data['E'][i]
df['F'][i]=df['F'][i-1]+data['F'][i]
df['G'][i]=df['G'][i-1]+data['H'][i]
dd=pd.concat([df1,df])
dd.to_excel('e:\cjh\Documents\python\OriginalData1.xlsx',index=False)
|
|