按唯一列值拆分Pandas DataFrame并导出为多个CSV文件
按地点拆分DataFrame并批量导出CSV的解决方案
我来帮你搞定这个问题!你之前的代码逻辑有小问题,而且没必要用全局变量来管理拆分后的DataFrame,咱们用Pandas的groupby就能轻松实现需求,还能直接批量导出CSV文件。
问题分析
你之前的代码for i in df是在遍历DataFrame的列名(也就是Location、Name、Date),而不是你需要的唯一地点值,所以根本没按地点拆分。而且用globals()创建一堆变量既不优雅也没必要,咱们直接在分组时就完成导出操作。
完整实现代码
import pandas as pd # 先构建你的示例DataFrame(实际使用时替换成你自己的df即可) data = { 'Location': ['OFFICE', 'OFFICE', 'HOME', 'HOME', 'HOME', 'SHOPPING', 'SHOPPING', 'HOME'], 'Name': ['Bob', 'Jane', 'Bob', 'Jane', 'John', 'Suzie', 'John', 'Bobby'], 'Date': ['3-Apr-15', '3-Apr-15', '3-Apr-15', '4-Apr-15', '4-Apr-15', '5-Apr-15', '5-Apr-15', '5-Apr-15'] } df = pd.DataFrame(data) # 按Location分组,遍历每个分组并导出CSV for location, group_df in df.groupby('Location'): # 导出为CSV,文件名用地点命名(比如OFFICE.csv),index=False避免导出索引列 group_df.to_csv(f"{location}.csv", index=False) # 如果需要查看拆分后的DataFrame,直接打印即可 print(f"=== 地点 {location} 的数据 ===") print(group_df)
代码说明
- 分组逻辑:
df.groupby('Location')会自动把DataFrame按Location列的唯一值分成多个子DataFrame,每个子DataFrame对应一个地点。 - 批量导出:遍历分组时,
location是当前组的地点名称,group_df是对应地点的子DataFrame,调用to_csv()就能直接导出,文件名用地点命名非常直观。 - 细节调整:
index=False是为了避免把Pandas的索引列导出到CSV里,如果你的需求需要保留索引,可以去掉这个参数。
这样不管你有70个还是更多唯一地点,代码都能自动处理,不需要手动修改,而且全程不用创建多余的全局变量,代码简洁又易维护。
内容的提问来源于stack exchange,提问作者LMGagne
相关产品推荐
相关产品推荐

