python - 熊猫在不四舍五入的情况下截断列值
问题描述
我的输入数据框;
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)
推荐阅读
- character-encoding - 计算机的字符编码
- powerbi - 如何从 Power Query 中的一个日期列创建开始日期和结束日期列?
- azure-devops - Azure DevOps 触发管道
- python - 如何从产生两个二维数组输出的函数的 1 个输出中选择 1 行数据
- sql - 在特定日期和时间之后获取数据,但日期和时间在 SQL Server 的不同列中
- php - Laravel 过滤一对多关系
- python - 在一列的每一行中搜索特定字符
- c++ - 具有不同类型算术的嵌套可变参数模板参数的构造函数
- google-sheets - Google 表格:在 Arrayformula 函数中重复 INDEX 函数
- vmware - 服务条款——或者我可以在我的网站上分发“免费”软件的副本吗?