描述: 下午快下班的时候公司供应链部门的同事跑过来问我能不能以程序的方法帮他解决一些excel表格每周都需要手工重复做的事情,Excel 是数据处理最常用的办公工具对于市场、运营都应该很熟练。哈哈,然而程序员是不怎么会用excel的。下面给大家介绍一下pandas, Pandas是一个强大的分析结构化数据的工具集;它的使用基础是Numpy(提供高性能的矩阵运算);用于数据挖掘和数据分析,同时也提供数据清洗功能。
具体需求:
找出相同的数字,把与数字对应的英文字母合并在一起。
期望最终生成值:
TAOCGQ I 1
TAOCGQ WY 2
TAOCGQ BHLPQGRN 3
TAOCGQ VUE 4
TAOCGQ Z 5
代码实现:
import pandas as pd df = pd.read_excel(r'E:\代码\tables_results\价格表.xlsx') pd_result = df.to_dict(orient='split') '''舱位信息列表['航线', 'W', 'I', 'Y', 'B', 'H', 'L', 'P', 'Q', 'G', 'V', 'U', 'Z', 'R', 'N', 'E', 'K']''' cabin_list = pd_result['columns'] '''航线信息及价格列表 [['LHW-ZUH', 2.0, 0.0, 2.0, 2.0, 2.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 2.0, 2.0, 2.0, 0] ]''' data_lists = pd_result['data'] for data in data_lists: for number in range(0,20): ''' 循环航线信息取出列表的索引id''' idxs = [i for i, x in enumerate(data) if x == number] if idxs: #索引列表 news_data_list = [] for idx in idxs: #循环索引列表 news_data_list.append(cabin_list[idx]) cabin_merge = ''.join(news_data_list) # 将多个舱位合并 aviation_rebate = idxs[0] # 取出返点价格,因为有多个索引,只取第一个就行 air_route = str(data[0]).split('-') #航线 LHW-ZUH dpt = air_route[0] # 出发城市 arr = air_route[1] # 到达城市 result = dpt + arr + ',' + cabin_merge + ',' + str(int(data[aviation_rebate])) ''' 最终结果: ['LHWZUH', 'IK', '0'] ['LHWZUH', 'WYBHRNE', '2'] ['LHWZUH', 'LPQGVUZ', '3'] ['ZUHLHW', 'IK', '0'] ''' print(result.split(','))
程序执行结果:
['TAOCGQ', 'I', '1'] ['TAOCGQ', 'WY', '2'] ['TAOCGQ', 'BHLPQGRN', '3'] ['TAOCGQ', 'VUE', '4'] ['TAOCGQ', 'Z', '5']