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
相关产品推荐
相关产品推荐

