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

如何将DataFrame指定列列表中的数据转换为Decimal类型?

将DataFrame指定列转为Decimal类型

你写的遍历代码有问题——Decimal(df[column_name])会直接报错,因为df[column_name]是Pandas的Series对象,而Decimal()只能处理单个值,没法直接作用于整个Series。下面给你两种可行的实现方式:

方法一:遍历列逐个转换

用apply对每一列的每个元素单独应用Decimal转换,代码如下:

from decimal import Decimal

column_list = ['Parameter 1', 'Parameter 2', ..., 'Parameter N']

for col in column_list:
    df[col] = df[col].apply(Decimal)

如果列里存在空值(NaN),直接转会报错,可以加个判断处理:

import pandas as pd
from decimal import Decimal

for col in column_list:
    df[col] = df[col].apply(lambda x: Decimal(x) if pd.notna(x) else x)

方法二:批量转换(更简洁)

用applymap对指定列的所有元素批量转换,代码更紧凑:

from decimal import Decimal
import pandas as pd

column_list = ['Parameter 1', 'Parameter 2', ..., 'Parameter N']

df[column_list] = df[column_list].applymap(Decimal)

处理空值的版本:

df[column_list] = df[column_list].applymap(lambda x: Decimal(x) if pd.notna(x) else x)

额外提醒

  • 要确保列中的数据是可转换为Decimal的类型(比如数字、数字格式的字符串),如果有非数值内容,转换会抛异常,得先做数据清洗。
  • 如果是浮点数转Decimal,建议先转成字符串再转换,避免浮点数本身的精度丢失:
    df[col] = df[col].apply(lambda x: Decimal(str(x)) if pd.notna(x) else x)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 20:13:14