import pandas as pd data = pd.read_excel(r'E:\每日数据\MISPOS明细.xlsx',dtype={'商户编号':str,'终端编号':str, '处理情况': str}) rows = data.shape[0] # 获取行数 shape[1]获取列数 department_list = [] for i in range(rows): temp = data["省份"][i] if temp not in department_list: department_list.append(temp) # 将省份的分类存在一个列表中 for department in department_list: new_df = pd.DataFrame() for i in range(0, rows): if data["省份"][i] == department: new_df = pd.concat([new_df, data.iloc[[i], :]], axis=0, ignore_index=True) # 上面的循环效率太低了,这么做太蠢了,其实可以用pandas的条件筛选 new_df = data[(data["省份"] == department) & (data["处理情况"] == "未处理")] # 如果多条件筛选,new_df = data[(data["省份"] == department)&()&()] 括号里写条件用 & 连起来 new_df.to_excel(str(department) + "旧机具未处理明细" + ".xlsx", sheet_name=department, index=False) # 将每个省份存成一个新excel
时间: 2024-04-22 12:21:52 浏览: 134
利用pandas将excel中数据抽取
这段代码的功能是读取一个名为“MISPOS明细.xlsx”的Excel文件,然后将其中的数据按照省份和处理情况分类,最终将每个省份的“未处理”数据存储在以省份命名的新Excel文件中。具体实现过程如下:
1. 导入 pandas 库并读取 Excel 文件,其中 dtype 参数指定了某些列的数据类型为字符串类型。
2. 获取 Excel 文件的行数并创建一个空列表 department_list。
3. 遍历每一行数据,将该行的省份存储在临时变量 temp 中,如果 temp 不在 department_list 中,将其添加到 department_list 中。
4. 遍历 department_list 中的每一个省份,创建一个空的 DataFrame 对象 new_df。
5. 遍历每一行数据,如果该行数据的省份等于当前的省份 department 并且处理情况为“未处理”,将该行数据添加到 new_df 中。
6. 使用 Pandas 的条件筛选功能,将新的数据框 new_df 重新赋值为按照省份和处理情况筛选后的数据框。
7. 将 new_df 存储为以省份命名的新 Excel 文件,文件名为“省份+旧机具未处理明细.xlsx”。其中 to_excel() 方法的参数 sheet_name 指定了新 Excel 文件中的工作表名,参数 index=False 表示不将行索引写入文件中。
阅读全文