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

Python读取Excel时保留数字格式并区分类型(货币、百分比等)

保留Excel中带格式符号的数值类型并读取到Pandas DataFrame

直接用pd.read_excel()读取时,Pandas会自动将Excel中的数值(包括百分比、货币)转换为浮点数,丢失格式符号。要保留这些符号以区分类型,需要借助openpyxl读取单元格的格式信息,手动处理目标列:

步骤1:导入依赖库

import pandas as pd
from openpyxl import load_workbook

步骤2:加载Excel并提取格式信息

设置data_only=False是核心,这样才能获取单元格的格式配置,而非仅计算后的值:

# 替换为你的Excel文件路径
wb = load_workbook('your_file.xlsx', data_only=False)
ws = wb['Sheet One']

步骤3:遍历数据并处理目标列

假设Goal列是第5列(对应Excel的E列,索引从0开始为4),根据单元格的number_format判断类型,生成带格式符号的字符串:

# 提取表头
headers = [cell.value for cell in next(ws.iter_rows(min_row=1, max_row=1))]

data = []
for row in ws.iter_rows(min_row=2):
    row_data = []
    for idx, cell in enumerate(row):
        # 只处理Goal列
        if idx == 4:
            val = cell.value
            fmt = cell.number_format
            # 判断格式类型并生成对应字符串
            if '%' in fmt:
                # 百分比:数值转百分比格式字符串
                row_data.append(f"{val * 100:.0f}%")
            elif '$' in fmt:
                # 货币:添加$符号
                row_data.append(f"${val:.0f}")
            else:
                # 普通整数:直接转字符串
                row_data.append(str(int(val)))
        else:
            # 其他列直接保留原值
            row_data.append(cell.value)
    data.append(row_data)

# 构建最终DataFrame
df = pd.DataFrame(data, columns=headers)

效果验证

处理后df['Goal']列会保留原始格式符号:

0      24
1     18%
2    $220
Name: Goal, dtype: object

这样就能直接通过符号区分每行的目标跟踪类型,无需修改源Excel文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 08:40:29