如何基于特定列字符串值拆分Excel工作表?求R/Python解决方案
按特定列拆分Excel为多个工作表的解决方案
下面分别提供Python和R的实现方案,解决手动拆分耗时的问题。
Python 实现方案
依赖准备
需要安装pandas和openpyxl库,用于读取和写入Excel文件:
pip install pandas openpyxl
代码实现
方案1:拆分到同一个Excel文件的多个工作表
将每个城市的数据保存为目标Excel文件中的独立工作表:
import pandas as pd # 读取原始Excel文件 df = pd.read_excel("原始数据.xlsx") # 按"City Name"列分组,遍历每个分组 with pd.ExcelWriter("拆分结果.xlsx") as writer: for city, group in df.groupby("City Name"): # 将分组数据写入以城市名命名的工作表 group.to_excel(writer, sheet_name=f"TABLE_{city.upper()}", index=False)
方案2:拆分到独立的Excel文件
每个城市的数据保存为单独的Excel文件:
import pandas as pd import os # 创建保存结果的文件夹(如果不存在) os.makedirs("拆分结果文件夹", exist_ok=True) # 读取原始数据 df = pd.read_excel("原始数据.xlsx") # 遍历分组,生成独立文件 for city, group in df.groupby("City Name"): file_name = f"拆分结果文件夹/TABLE_{city.upper()}.xlsx" group.to_excel(file_name, index=False)
R 实现方案
依赖准备
需要安装readxl(读取Excel)和openxlsx(写入多工作表Excel)库:
install.packages(c("readxl", "openxlsx"))
代码实现
方案1:拆分到同一个Excel文件的多个工作表
library(readxl) library(openxlsx) # 读取原始数据 df <- read_excel("原始数据.xlsx") # 创建Excel写入对象 wb <- createWorkbook() # 按"City Name"分组处理 city_groups <- split(df, df$`City Name`) for (city in names(city_groups)) { # 添加工作表并写入数据 addWorksheet(wb, sheetName = paste0("TABLE_", toupper(city))) writeData(wb, sheet = paste0("TABLE_", toupper(city)), x = city_groups[[city]], rowNames = FALSE) } # 保存结果 saveWorkbook(wb, "拆分结果.xlsx", overwrite = TRUE)
方案2:拆分到独立的Excel文件
library(readxl) library(writexl) library(fs) # 创建结果文件夹 dir_create("拆分结果文件夹", recurse = TRUE) # 读取原始数据 df <- read_excel("原始数据.xlsx") # 分组并生成独立文件 city_groups <- split(df, df$`City Name`) for (city in names(city_groups)) { file_path <- path("拆分结果文件夹", paste0("TABLE_", toupper(city), ".xlsx")) write_xlsx(city_groups[[city]], path = file_path) }
内容的提问来源于stack exchange,提问作者neo devn
相关产品推荐
相关产品推荐

