如何将数据框的两列添加为小数?

How to add two columns of a dataframe as Decimals?

我正在尝试使用 Python 中的 Decimal 模块将两列添加到一起,但似乎无法获得正确的语法。我有 2 列称为 month1month2,并且不希望它们在结果的任何时候变成 floats,因为稍后需要进行除法和舍入。

month1month2 列已经是几位小数,因为它们是平均值,我需要在加法中保持这种准确性。

我可以在网上看到有关如何使用 Decimal 将数字相加的指南,但看不到如何将其应用于 pandas 数据框中的列的指南。我试过类似的东西:

df['MonthTotal'] = Decimal.decimal(df['Month1']) + Decimal.decimal(df['Month1'])

解决方法是什么?

from decimal import Decimal

def convert_decimal(row):
    row["monthtotal"] = Decimal(row["month1"])+Decimal(row["month2"])
    return row

df = df.apply(convert_decimal, axis =1)

decimal.Decimal 旨在接受单个值,而不是 pandas.Series 个值。假设您的列包含表示数值的字符串,您可以使用 .applymap 来按元素使用 decimal.Decimal 即:

import decimal
import pandas as pd
df = pd.DataFrame({'x':['0.1','0.1','0.1'],'y':['0.1','0.1','0.1'],'z':['0.1','0.1','0.1']})
df_decimal = df.applymap(decimal.Decimal)
df_decimal["total"] = df_decimal.x + df_decimal.y + df_decimal.z
print(df_decimal.total[0])
print(type(df_decimal.total[0]))

输出

0.3
<class 'decimal.Decimal'>