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

如何将pandas字符串Series转换为符合18位小数规则的float数值

报错原因

代码抛出TypeError是因为错误地将生成器表达式int(item) for item in my_series直接传入了format方法,该方法无法识别生成器对象。同时转换逻辑存在偏差:题目中每个字符串本质是「实际值放大10^18倍后的整数的字符串形式」,直接做除法即可得到真实值,无需额外做字符串格式化。

转换代码

普通列表转换

如果处理的是普通Python列表,直接用列表推导式即可:

my_series = ['150000000000000000000000', '45064744242514231410', '2618611848503168287542', '7673975728717793369']
converted_list = [int(item) / 10**18 for item in my_series]

Pandas Series转换

如果处理的是Pandas Series对象,用向量化操作效率更高:

import pandas as pd

my_series = pd.Series(['150000000000000000000000', '45064744242514231410', '2618611848503168287542', '7673975728717793369'])
# 方案1:先转整数再做除法,适合数值范围在int64以内的场景
converted_series = my_series.astype('int64') / 10**18
# 方案2:直接转float后做除法,兼容超大数值场景
converted_series = my_series.astype(float) / 10**18

转换后得到的数值完全符合需求:

  • 第一个值对应150000.0
  • 第二个值对应45.06474424251423
  • 第三个值对应2618.611848503168
  • 第四个值对应7.673975728717793

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 08:36:03