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

Python 在不舍入的情况下截断列值,python,pandas,Python,Pandas,我的输入数据框 A B 1 1.34934843904358403583408530 3 2.348430840938534058049385340983098 4 1.2309309340949084908908093947 7 15.323927236782 3 102.243984786372541562121652 我想在点后用八位数字截断B列而不进行舍入,但截断的值应该是我的新值,不用于显示。第一个值不应存储在框架的背景中。

我的输入数据框

A      B
1      1.34934843904358403583408530
3      2.348430840938534058049385340983098
4      1.2309309340949084908908093947
7      15.323927236782
3      102.243984786372541562121652
我想在点后用八位数字截断B列而不进行舍入,但截断的值应该是我的新值,不用于显示。第一个值不应存储在框架的背景中。而且,B列应该是数字

期望输出为

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

你能帮我解决这个问题吗?

思想是用
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)

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)

它对我的实际数据帧不起作用,尽管我在数据中使用了pd.to_numeric,但在运行代码后,值如下所示;0.6428571400000490848606204963288920125961303…可能,但我能在最后一种情况下将其转换回浮点吗?是否有可能像截断函数等方式?我得到一个错误:ValueError:未知格式代码“f”类型的对象“str”,它在我的实际数据帧上不起作用,尽管我在数据中使用了pd.to_numeric,运行代码后的值如下所示;0.6428571400000490848606204963288920125961303…可能,但我能在最后一种情况下将其转换回浮点吗?是否有可能像截断函数等任何方式?我得到一个错误:ValueError:类型为“str”的对象的未知格式代码“f”