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

按指定列分位数拆分DataFrame并导出Excel及格式调整问询

解决方案

需求说明

我们需要处理一个包含800家企业数据的DataFrame,完成以下操作:

  • 按**「ESG综合得分2011」**(原列名ESG Combined Score 2011)列将数据拆分为4个等规模分位数组(Q1至Q4,Q4包含得分最高的企业),每组200条数据
  • 将每组数据导出至Excel文件的对应工作表(工作表名分别为Q1、Q2、Q3、Q4)
  • 对**「公司市值」**(原列名Company Market Capitalization)列取消科学计数法显示,改为带千位分隔符的格式

代码实现

使用pandas结合xlsxwriter引擎完成需求,代码如下:

import pandas as pd

# 假设数据已加载到df1中,若未加载可通过下面的代码读取
# df1 = pd.read_excel("你的数据源文件.xlsx")

# 1. 按ESG得分拆分4个分位数组,Q4对应最高分区间
df1['分位组'] = pd.qcut(df1['ESG Combined Score 2011'], q=4, labels=['Q1', 'Q2', 'Q3', 'Q4'])

# 2. 创建Excel写入对象,指定xlsxwriter引擎支持格式自定义
with pd.ExcelWriter('企业ESG分位数据.xlsx', engine='xlsxwriter') as writer:
    # 遍历每个分位组,导出到对应工作表
    for group_name, group_data in df1.groupby('分位组'):
        group_data.to_excel(writer, sheet_name=group_name, index=False)
        
        # 获取工作表和格式对象,设置千位分隔符格式
        workbook = writer.book
        worksheet = writer.sheets[group_name]
        num_format = workbook.add_format({'num_format': '#,##0'})
        
        # 定位市值列,应用格式(跳过表头,从第2行开始)
        col_index = group_data.columns.get_loc('Company Market Capitalization')
        worksheet.set_column(col_index, col_index, None, num_format)

关键细节说明

  • pd.qcut():按指定分位数等拆分数据,q=4确保拆分为4个等大小组,labels参数明确分组命名,保证Q4对应最高分区间
  • xlsxwriter引擎:支持自定义单元格格式,通过add_format()创建带千位分隔符的数字格式,再用set_column()批量应用到目标列,彻底消除科学计数法
  • 分组导出:通过groupby()遍历每个分位组,直接将组数据写入对应工作表,流程简洁高效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 17:45:32