You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Pandas将DataFrame转换为指定格式的Excel文件(按唯一S_NAME拆分工作表)

Pandas: 将DataFrame按S_NAME拆分到Excel多个工作表

嘿,我来帮你搞定这个问题!你的需求其实很常见——把DataFrame按S_NAME的唯一值拆分到Excel的不同工作表里,之前的字典方法方向偏了(你之前的代码是把每一列的唯一值单独做成DataFrame,这和按S_NAME分组的需求不匹配),咱们来一步步实现正确的方案:

核心思路

我们需要按S_NAME对DataFrame进行分组,然后把每个分组的数据分别写入Excel文件的对应工作表中,这里要用到Pandas的groupby()方法和ExcelWriter工具。

完整实现代码

import pandas as pd

# 1. 读取CSV数据(你的这部分是对的,因为CSV没有表头,所以用names指定列名)
df = pd.read_csv('input.csv', sep=',', names=['S_NAME', 'S_ID', 'TYPE_NAME', 'TYPE_ID'])

# 2. 创建ExcelWriter对象,用于写入多个工作表
with pd.ExcelWriter('output.xlsx') as writer:
    # 3. 按S_NAME分组,遍历每个分组
    for s_name, group in df.groupby('S_NAME'):
        # 4. 将当前分组的数据写入以S_NAME命名的工作表
        # 注意:这里设置index=False来避免写入默认的行索引,让输出更整洁
        group.to_excel(writer, sheet_name=s_name, index=False)

代码细节解释

  • groupby('S_NAME'): 这一步会把原始DataFrame拆分成多个子DataFrame,每个子DataFrame对应一个唯一的S_NAME值。遍历的时候,s_name是分组的名称(比如"AD EXTRACT"),group就是对应的数据子集。
  • pd.ExcelWriter: 这是Pandas专门用来处理多工作表Excel文件的工具,用with语句可以自动帮我们关闭文件,避免资源泄漏。
  • to_excel(): 每个分组调用这个方法,把数据写入指定的工作表,sheet_name=s_name直接用S_NAME的值作为工作表名称,完全符合你的需求。

额外小提示

如果你的S_NAME里包含Excel工作表名不允许的字符(比如/、\、:等),可以提前对工作表名称做清洗,比如:

# 把非法字符替换成下划线,避免写入出错
clean_sheet_name = s_name.replace('/', '_').replace(':', '_').replace('\\', '_')
group.to_excel(writer, sheet_name=clean_sheet_name, index=False)

内容的提问来源于stack exchange,提问作者Paulson Mathew

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.01 00:22:27