如何将数据框的两列添加为小数?
How to add two columns of a dataframe as Decimals?
我正在尝试使用 Python 中的 Decimal
模块将两列添加到一起,但似乎无法获得正确的语法。我有 2 列称为 month1
和 month2
,并且不希望它们在结果的任何时候变成 float
s,因为稍后需要进行除法和舍入。
month1
和 month2
列已经是几位小数,因为它们是平均值,我需要在加法中保持这种准确性。
我可以在网上看到有关如何使用 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'>
我正在尝试使用 Python 中的 Decimal
模块将两列添加到一起,但似乎无法获得正确的语法。我有 2 列称为 month1
和 month2
,并且不希望它们在结果的任何时候变成 float
s,因为稍后需要进行除法和舍入。
month1
和 month2
列已经是几位小数,因为它们是平均值,我需要在加法中保持这种准确性。
我可以在网上看到有关如何使用 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'>