Gin*_*aze 8 python math rounding pandas
我有一个浮点数数据框,我需要创建一个函数,该函数将采用一列并将所有值四舍五入为 N 个有效数字
所以该列可能看起来像这样:
123.949
23.87
1.9865
0.0129500
Run Code Online (Sandbox Code Playgroud)
如果我想四舍五入到 3 个有效数字,我会将列和 3 传递给函数来得到这个
124.0
23.9
1.99
0.013
Run Code Online (Sandbox Code Playgroud)
如何在不循环列的情况下有效地完成此操作?
我有一个方程可以计算一个数字的有效数字
round(x, N-int(floor(log10(abs(x))))
Run Code Online (Sandbox Code Playgroud)
但它不适用于系列或数据框
您可以使用pandas.Series.apply它跨轴(列或行)逐元素实现函数:
df.col.apply(lambda x: round(x, N - int(floor(log10(abs(x))))))
Run Code Online (Sandbox Code Playgroud)
请注意,您不能真正pandas.DataFrame.apply在此处使用,因为舍入函数应该是元素方面的,而不是在整个轴上。
区别在于您的函数输入不是float获取array.
另一种选择是applymap在整个pandas.DataFrame.
df.applymap(lambda x: round(x, N - int(floor(log10(abs(x))))))
Run Code Online (Sandbox Code Playgroud)