如何用Python按日期列将单个Excel文件拆分为12个月度文件?
Python实现Excel按月份拆分十万行数据
依赖准备
先安装所需的Python库:
pip install pandas openpyxl
核心代码
以下代码可快速处理十万级数据,按日期列拆分出12个对应月份的独立文件:
import pandas as pd # 读取原始Excel文件,替换为你的实际文件路径 df = pd.read_excel("原始数据.xlsx", engine="openpyxl") # 确保日期列被正确解析,替换"日期列名"为你表格中的日期列标题 df["日期列名"] = pd.to_datetime(df["日期列名"]) # 提取月份作为分组依据 df["月份"] = df["日期列名"].dt.month # 按月份分组并保存每个组到独立文件 for month, group in df.groupby("月份"): # 移除临时新增的月份列 group = group.drop("月份", axis=1) # 保存为对应月份的Excel文件,格式如"1月数据.xlsx" group.to_excel(f"{month}月数据.xlsx", index=False, engine="openpyxl")
补充说明
- 若你的Excel是
.xls格式,将代码中的engine参数改为"xlrd",需额外安装指定版本:pip install xlrd==1.2.0(新版本xlrd不再支持xls格式) - 若内存不足无法一次性加载十万行数据,可使用分块读取方案:
import pandas as pd chunk_size = 10000 writer_dict = {} # 预先初始化每个月份的文件写入器 for month in range(1, 13): writer = pd.ExcelWriter(f"{month}月数据.xlsx", engine="openpyxl") writer_dict[month] = writer # 分块读取原始数据并追加写入对应月份文件 for chunk in pd.read_excel("原始数据.xlsx", chunksize=chunk_size, engine="openpyxl"): chunk["日期列名"] = pd.to_datetime(chunk["日期列名"]) chunk["月份"] = chunk["日期列名"].dt.month for month, group in chunk.groupby("月份"): group = group.drop("月份", axis=1) # 仅在首次写入时添加表头 group.to_excel(writer_dict[month], index=False, header=not writer_dict[month].sheets) # 关闭所有写入器,完成文件保存 for writer in writer_dict.values(): writer.close()
内容的提问来源于stack exchange,提问作者Nahiyan_ualr
相关产品推荐
相关产品推荐

