我有一个浮点数数据框,我需要创建一个函数,该函数将采用一列并将所有值四舍五入为 N 个有效数字
所以该列可能看起来像这样:
123.949
23.87
1.9865
0.0129500
如果我想四舍五入到 3 个有效数字,我会将列和 3 传递给函数来得到这个
124.0
23.9
1.99
0.013
如何在不循环列的情况下有效地完成此操作?
我有一个方程可以计算一个数字的有效数字
round(x, N-int(floor(log10(abs(x))))
但它不适用于系列或数据框
您可以使用,pandas.Series.apply
它在轴(列或行)上逐元素实现函数:
df.col.apply(lambda x: round(x, N - int(floor(log10(abs(x))))))
请注意,您不能真正使用pandas.DataFrame.apply
这里因为舍入函数应该是元素级的,而不是整个轴上的。
区别在于你的函数输入是float
而不是得到一个array
.
另一种选择是applymap
它在整个元素上实现了一个函数pandas.DataFrame
.
df.applymap(lambda x: round(x, N - int(floor(log10(abs(x))))))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)