我有一个pandas数据帧,它有两列,第1列有文本,第2列有十进制值。
键 | |
---|---|
A | 1.2089 |
B | 5.6718 |
B | 7.3084 |
这可以通过更改浮点的打印选项来修改,但它将修改每个浮点数据类型的打印方式
pd.set_option('display.float_format', '{:.10f}'.format)
请记住,这只是它的打印方式。该值与每个小数一起存储在数据帧中。
另一方面,您可以通过以下方式限制小数:
df.Value = df.Value.round(4)
但这将取决于小数点后五位。最后一种选择是使用np.ceil
或np.floor
,但由于这不支持小数,因此需要一种乘法和除法的方法:
precision = 4
df['Value_ceil'] = np.ceil(df.Value * 10**precision) / (10**precision)
df['Value_floor'] = np.floor(df.Value * 10**precision) / (10**precision)
修复了这个问题,似乎与Decimal如何从浮点转换为十进制有关。将Values列设置为数据类型字符串,然后转换为Decimal,得到了我想要的结果。
def get_df(table_filepath):
df = pd.read_csv(table_filepath)
df['Value'] = df['Value'].apply(str)
df['Value'] = df['Value'].apply(Decimal)
键 | |
---|---|
A | 1.2089 |
B | 5.6718 |
B | 7.3084 |