在不舍入的情况下截断列值

2024-05-16 21:48:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我的输入数据帧

A      B
1      1.34934843904358403583408530
3      2.348430840938534058049385340983098
4      1.2309309340949084908908093947
7      15.323927236782
3      102.243984786372541562121652

我想在不舍入的情况下用点后面的8位数字截断B列,但截断的值应该是我的新值,而不是用于显示。第一个值不应存储在框架的背景中。而且,B列应该是数字

期望输出为

A      B
1      1.34934843
3      2.34843084
4      1.23093093
7      15.32392723
3      102.24398478

你能帮我一下吗


Tags: 数据框架情况数字背景新值
1条回答
网友
1楼 · 发布于 2024-05-16 21:48:30

Idea是将值乘以10**N值,转换为int,然后除以:

N = 8
df['B'] = df['B'].mul(10**N).astype(np.int64).div(10**N)
print (df)
   A           B
0  1    1.349348
1  3    2.348431
2  4    1.230931
3  7   15.323927
4  3  102.243985

另一个想法是将值转换为具有精度的字符串,然后转换为浮点值:

df['B'] = df['B'].map(lambda x: "{:.8f}".format(x)).astype(float)

相关问题 更多 >