如何用Python DataFrame按指定行数拆分列1并保留列2全量数据生成多份Excel文件
如何用Python DataFrame按指定行数拆分列1并保留列2全量数据生成多份Excel文件
嘿,我完全get到你的需求啦!就是要把Excel里的城市列每10个拆成一组,每组都搭配完整的人员列(每个城市都要对应所有人员),然后导出成多个独立的Excel文件对吧?用Pandas的DataFrame就能轻松实现,我给你一步步说清楚怎么做:
第一步:导入所需库
首先得导入Pandas,要是你想把生成的文件统一放到某个文件夹里,也可以导入os来管理路径:import pandas as pd import os第二步:读取原始Excel文件
把你的原始Excel文件读进DataFrame里,记得替换成你自己的文件路径和列名:# 读取原始数据 df = pd.read_excel("你的原始文件路径.xlsx") # 提取城市列和人员列,这里假设列名是"城市"和"人员",你可以改成自己的列名 cities = df["城市"].drop_duplicates().tolist() # 去重避免重复处理同一城市 persons = df["人员"].drop_duplicates().tolist() # 去重获取唯一的人员列表第三步:拆分城市列表为每10个一组
用列表推导式把城市列表拆分成每10个元素为一组的子列表,最后一组如果不足10个也会自动保留:# 按每10个城市拆分 city_groups = [cities[i:i+10] for i in range(0, len(cities), 10)]第四步:循环生成并导出每个Excel文件
遍历每个城市组,和完整的人员列表做交叉连接(让每个城市都对应所有人员),然后导出成Excel文件:# 创建存放文件的文件夹(可选,不想创建的话可以跳过这步) if not os.path.exists("拆分后的文件"): os.makedirs("拆分后的文件") # 循环处理每个城市组 for file_num, city_group in enumerate(city_groups, start=1): # 把当前城市组转成DataFrame city_df = pd.DataFrame({"城市": city_group}) # 把人员列表转成DataFrame person_df = pd.DataFrame({"人员": persons}) # 交叉连接,得到每个城市对应所有人员的组合 result_df = city_df.merge(person_df, how="cross") # 导出到Excel,保存到指定文件夹 output_path = f"拆分后的文件/File_{file_num}.xlsx" result_df.to_excel(output_path, index=False) print(f"已成功生成:{output_path}")
这样运行之后,你就能得到一个个符合要求的Excel文件啦!比如第一个文件是前10个城市搭配所有人员,第二个是接下来的10个,直到所有城市都处理完。
备注:内容来源于stack exchange,提问作者User646972
相关产品推荐
相关产品推荐

