一、场景分析
假设有如下一份 excel 数据 shop.xlsx, 写一段 python 程序,实现对于车牌的分组数据过滤。
并以车牌为文件名,把店名输出到 车牌.txt 文件中。
比如 闽A.txt 文件内容为:
小林书店福州店1
小林书店福州店2
二、依赖安装
程序依赖 pandas 对 excel 数据进行处理,所以需要先安装一下 pandas 依赖。
pip install pandas
三、代码实现
import pandas as pd# pandas 菜鸟教程
# https://www.runoob.com/pandas/pandas-dataframe.html# 输入文档
input_path = r"C:\Users\Administrator\Desktop\py\excel\filter\shop.xlsx"# 读取 Excel 文件,将其存储在一个DataFrame对象中
df = pd.read_excel(input_path)
# 行数,注意这个行数是数据行数,标题不算
rows = df.shape[0]
# 最终的数据结果是,{ '闽A':[], '闽B':[], '闽C':[] }
result = {}# 根据 车牌号,获取店名
for i in range(0, rows):# df.loc[ idx, 'Column1'] # idx : 行标,从 0 开始,0 是数据行的第一行,即 excel 的第二行carNo = df.loc[i, '车牌']print( carNo )shopName = df.loc[i, '店名']print( shopName )# 以 carNo 为 key 从字典中获取值列表,没有返回 None,避免 KeyErrorvalue_list = result.get(carNo, None)if value_list:value_list.append(shopName)else:value_list = []value_list.append(shopName)result[ carNo ] = value_listprint( result )
# 根据 carNo, 生成 txt, 内容是 店名
# 遍历 key 列表
for key in result.keys():value_list = result.get(key)output_path = key+'.txt'# 以 write 的方式打开输出文件with open( output_path, 'w', encoding='utf-8') as file:num = len( value_list ) end = num - 1for i, item in enumerate(value_list):# 最后一行数据不需要换行if i == end:file.write(item) else:file.write(item + '\n')
四、运行
py shop_filter.py
五、扩展阅读
更多关于 python 操作 excel 的内容可以看我的 博文