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

Pandas处理int/str混合值列时长整数科学计数法显示问题

更新

尝试过相关方案后,仍然只能得到字符串形式的5.02401E+16,无法拿到完整数值50240100011400000。
更新后运行结果截图

初始问题

需要处理Pandas中列名为REFERENCE NO的数据列,该列为混合类型,同时存在整数、字符串、非整数值,当前长整数会自动显示为科学计数法形式的5.02401E+16,需要正确显示完整长整数值50240100011400000。
初始问题数据截图


解决方案

问题来自两个核心原因:一是Pandas默认对大长度数值自动启用科学计数法显示规则,二是混合类型列会被识别为object类型,直接强转整列要么报错要么丢失精度。按以下步骤处理即可:

  1. 先关闭Pandas全局科学计数法显示配置
import pandas as pd
# 浮点数显示不带小数位,不触发科学计数法
pd.set_option('display.float_format', lambda x: f'{x:.0f}')
  1. 逐元素转换REFERENCE NO列的值,兼容混合类型,原有非数值内容不会被篡改
def format_ref_no(val):
    # 处理科学计数法格式的字符串
    if isinstance(val, str) and 'E+' in val.upper():
        try:
            return str(int(float(val)))
        except ValueError:
            return val
    # 处理数值类型的大整数
    if isinstance(val, (int, float)) and not pd.isna(val):
        return str(int(val))
    # 其余非数值、空值原样返回
    return val

df['REFERENCE NO'] = df['REFERENCE NO'].apply(format_ref_no)
  1. 如果导出Excel时仍出现科学计数法,导出时将对应列设置为文本格式即可
# 示例:假设REFERENCE NO是第3列(列号从1开始计数,按实际位置调整列标)
with pd.ExcelWriter('result.xlsx', engine='openpyxl') as writer:
    df.to_excel(writer, index=False)
    ws = writer.sheets['Sheet1']
    ws.column_dimensions['C'].number_format = '@'

注意:不要直接对整列使用astype(int)或者pd.to_numeric(),列内存在非数值内容时这两个方法会直接报错,逐元素apply的方式可以完美兼容混合类型场景。


内容的提问来源于stack exchange,提问作者4 Leave Cover

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 02:03:25