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

Pandas如何将object类型列转换为decimal(3,9)格式数值

pandas object类型定长字符串转decimal(3,9)实现方案

你的WEGING列是固定12位长度的字符串,转换规则为前3位为整数部分、后9位为小数部分,以下是可直接运行的实现方式:


方案1:转换为高精度Decimal类型(推荐,符合decimal(3,9)精度要求)

使用Python标准库Decimal做类型转换,完全避免浮点数精度损失,适合后续数值计算场景:

from decimal import Decimal

# 固定位置插入小数点后转Decimal类型
df['WEGING'] = df['WEGING'].apply(lambda s: Decimal(f"{s[:3]}.{s[3:]}"))

方案2:转换为固定格式字符串(匹配给出的展示样例)

如果仅需要得到001.191833837这种带前导零的展示效果,不需要做数值运算,可以直接做字符串切片拼接:

df['WEGING'] = df['WEGING'].str[:3] + '.' + df['WEGING'].str[3:]

校验处理结果

执行以下代码查看前5行,和预期结果完全一致:

print(df['WEGING'].head())

输出:

0    001.191833837
1    001.083340239
2    000.716901420
3    001.191833837
4    001.191833837
Name: WEGING, dtype: object

注意事项

  • 处理前建议先校验字段长度,避免脏数据导致转换错误:执行df['WEGING'].str.len().value_counts(),确认所有值长度均为12位再执行转换。
  • 禁止直接使用float类型做转换,浮点数存储9位小数会出现精度丢失问题,例如001.191833837转float后可能出现1.191833836999999的误差。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 20:36:25