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

如何将Python DataFrame中的十进制数转换为指定10位格式?

解决方案

核心思路

把原数字放大10^8倍(相当于去掉小数点并保留8位小数),再格式化为10位带前导零的字符串,确保最终结果是2位整数部分+8位小数部分的无小数点格式。

直接实现代码

如果不需要封装函数,可直接对DataFrame列做向量式操作(效率更高):

# 处理PU Parte列,替换"原列名1"为你实际的列名
base['PU Parte'] = (base['原列名1'].round(8) * 10**8).astype(int).astype(str).str.zfill(10)

# 处理PU ContraParte列,替换"原列名2"为你实际的列名
base['PU ContraParte'] = (base['原列名2'].round(8) * 10**8).astype(int).astype(str).str.zfill(10)

整合到calculator_pu函数

如果要把逻辑封装到你已有的calculator_pu函数中,可这样写:

def calculator_pu(df, source_col, target_col):
    # 四舍五入到8位小数避免精度误差,再转换为目标格式
    df[target_col] = (df[source_col].round(8) * 10**8).astype(int).astype(str).str.zfill(10)
    return df

# 调用函数处理两列
base = calculator_pu(base, '原列名1', 'PU Parte')
base = calculator_pu(base, '原列名2', 'PU ContraParte')

步骤说明

  • .round(8):确保小数部分最多保留8位,解决浮点数精度导致的多余位数问题
  • *10**8:将原数字放大100000000倍,把小数点后8位移到整数位(比如1.02234583变为102234583)
  • .astype(int):转换为整数,彻底去除小数部分
  • .astype(str):转为字符串类型,方便后续补零
  • .str.zfill(10):用前导零填充至10位长度,自动补全整数部分的前导零(比如102234583变为0102234583)

测试验证

  • 原数值1.02234583 → 处理后得到0102234583
  • 原数值0.98232131 → 处理后得到0098232131
  • 原整数5 → 处理后得到0500000000(符合2位整数+8位小数的格式要求)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 10:25:23