You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何将Python、pandas、numpy输出转换为Excel文件?附输出示例

把Python/Pandas/Numpy输出转成带完整格式的Excel文件解决方案

没问题,这就给你一套能完美保留所有技术术语、数字格式和特殊符号的实现方案——用Pandas就能轻松搞定,它处理Excel导出的能力相当靠谱。下面是分步操作:

1. 确保数据是Pandas DataFrame格式

如果你的输出是控制台打印的文本(像你提供的那样),先把它转成DataFrame;如果已经是DataFrame,直接跳过这步。这里我把你给出的输出内容构造为DataFrame示例:

import pandas as pd

# 构造和你输出一致的DataFrame
data = {
    "Unnamed: 0": [
        "Przychody netto ze sprzedaży (tys. zł)",
        "Zysk (strata) z działal. oper. (tys. zł)",
        "Zysk (strata) brutto (tys. zł)",
        "Zysk (strata) netto (tys. zł)*",
        "Amortyzacja (tys. zł)",
        "EBITDA (tys. zł)",
        "Aktywa (tys. zł)",
        "Kapitał własny (tys. zł)*",
        "Liczba akcji (tys. szt.)",
        "Zysk na akcję (zł)"
    ],
    "IV Q 2016": [
        "8 078", "-15 386", "-16 300", "-8 500", "-1 059", "-16 445", "112 657", "1 127", "44 260,410", "-0,19"
    ],
    "I Q 2017": [
        "8 877", "-562", "-723", "-707", "1 191", "629", "152 271", "47 725", "44 260,410", "-0,02"
    ]
}

df = pd.DataFrame(data)

2. 处理数字格式并导出到Excel

你的数据里数字用空格做千分位分隔、逗号做小数点,直接导出会丢失格式,所以要先把字符串转成数值,再设置Excel单元格格式来还原显示效果:

第一步:转换数值类型

先把带空格和逗号的字符串转成Pandas能识别的数值:

# 指定数值列
numeric_cols = ["IV Q 2016", "I Q 2017"]

# 去除空格,把逗号替换成点,转成float类型
for col in numeric_cols:
    df[col] = df[col].str.replace(" ", "").str.replace(",", ".").astype(float)

第二步:导出并设置Excel格式

ExcelWriter配合openpyxl引擎来设置单元格格式,确保导出后和原始输出的显示一致:

# 先安装openpyxl(如果没装的话):pip install openpyxl
with pd.ExcelWriter("financial_report.xlsx", engine="openpyxl") as writer:
    # 导出DataFrame到Excel,不包含索引
    df.to_excel(writer, index=False, sheet_name="Finansowe dane")
    
    # 获取工作簿和工作表对象
    workbook = writer.book
    worksheet = writer.sheets["Finansowe dane"]
    
    # 定义需要的数字格式:千分位用空格,小数点用逗号,保留三位小数(可根据需求调整)
    custom_num_format = workbook.add_format({
        "num_format": "# ##0,000",
        "align": "right"
    })
    
    # 给数值列应用格式,同时设置列宽
    for col in numeric_cols:
        # openpyxl的列索引从1开始,所以要加1
        col_idx = df.columns.get_loc(col) + 1
        worksheet.set_column(col_idx, col_idx, width=16, cell_format=custom_num_format)
    
    # 调整第一列的宽度,让长文本完整显示
    worksheet.set_column(0, 0, width=45)

3. 验证导出结果

打开生成的financial_report.xlsx,你会看到:

  • 所有技术术语(如EBITDA、Kapitał własny)和特殊符号(如*)都完整保留
  • 数字显示和原始输出完全一致:千分位用空格分隔,小数点用逗号(比如44 260,410
  • 负数格式也正确显示

额外注意事项

  • 如果你的原始数据已经是DataFrame(不是控制台文本),直接跳过构造DataFrame的步骤即可
  • 要是需要更复杂的格式(比如字体、单元格颜色),可以扩展add_format的参数,比如"font_name": "Arial", "font_size": 10
  • 确保你安装了openpyxl,它是Pandas写入.xlsx文件的依赖引擎

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

火山引擎 最新活动