700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 利用Python做excel文本合并(根据左侧单元格 快速合并右侧单元格内容)

利用Python做excel文本合并(根据左侧单元格 快速合并右侧单元格内容)

时间:2019-02-22 13:17:54

相关推荐

利用Python做excel文本合并(根据左侧单元格 快速合并右侧单元格内容)

前言:昨天获得一个数据处理的小需求,比较简单,用VBA也能做,不过最近Python用的比较多,所以用Python写了,效率也很快。

需求:

有一张总表,如下图所示

需要根据左侧的工号和姓名,合并右侧获奖情况,结果如下图

解决思路:

其实比较简单,在leetcode里应该是最简单的初级题目,但是考虑到时间复杂度,如果用两层循环遍历的话,数据量大起来效率会很低,所以我使用了Pandas里面的筛选功能,基本在4秒内就完成了整个数据处理工作(数据量1700条)

代码:

import pandas as pdimport warningswarnings.filterwarnings('ignore')huojiang = pd.read_excel('获奖.xlsx')huojiang = huojiang.drop_duplicates()new_word = huojiang[['工号', '姓名']]new_word = new_word.drop_duplicates().reset_index(drop=True)new_word['获奖'] = ''old_row = huojiang.shape[0]new_row = new_word.shape[0]print(huojiang.shape[0])print(new_word.shape[0])for i in range(new_row):temp_id = new_word.iloc[i, 0]temp_df = huojiang[huojiang['工号']==temp_id]temp_df['last'] = temp_df['奖励名称'] + '(' + temp_df['年份'] + ')'temp = temp_df['last'].to_list()new_text = ','.join(temp)print(new_text)new_word.loc[i, '获奖'] = new_textnew_word.to_csv('结果.csv', encoding='gbk', index=False)

Tips: 不过听说Power Query也能完成这项工作,有空的时候试试看

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。