【发布时间】:2021-04-06 21:27:25
【问题描述】:
我有一个包含两列的 pandas 数据框,第 1 列包含文本,第 2 列包含十进制值。
| Key | Value |
|---|---|
| A | 1.2089 |
| B | 5.6718 |
| B | 7.3084 |
我使用 '.apply' 函数将 value 列的数据类型设置为 Decimal(Python Decimal 库)。一旦我这样做了,值列就会从小数点后 4 位变为小数点后 43 位。我尝试使用 .getcontect.prec = 4 无济于事。
数据框是通过读取与上表格式相同的 CSV 文件构建的。值列中的所有小数只保留 4 位小数。
import pandas as pd
from decimal import *
def get_df(table_filepath):
df = pd.read_csv(table_filepath)
getcontect.prec = 4
df['Value'] = df['Value'].apply(Decimal)
上面的代码是我尝试过的,但仍然导致输出的值列值有 43 个小数位,而不是从 csv 文件中读取的每个值应该有 4 个小数位。
我打印数据框时得到的结果是:
| Key | Value |
|---|---|
| A | 1.20890000000003046807250939309597015380859375 |
| B | 5.67180000000000318323145620524883270263671875 |
| B | 7.30838399999999969077180139720439910888671875 |
我只想要 4 位小数的精度,因为这些值稍后将用于进行一些数学运算,并且我想使用我提供的确切值。
【问题讨论】: