按指定列分位数拆分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
相关产品推荐
相关产品推荐

