Python:数字太长怎么办? [复制]
Posted
技术标签:
【中文标题】Python:数字太长怎么办? [复制]【英文标题】:Python: what to do if the number is too long? [duplicate] 【发布时间】:2015-08-08 01:58:16 【问题描述】:我正在尝试将poloar
转换为x-y
面板:
df['x']=df.apply(lambda x: x['speed'] * math.cos(math.radians(x['degree'])),axis=1)
df['y']=df.apply(lambda x: x['speed'] * math.sin(math.radians(x['degree'])),axis=1)
df.head()
这会产生
问题是x
太长了,怎么弄短一点?
我在How to turn a float number like 293.4662543 into 293.47 in python? 找到,我可以做"%.2f" % 1.2399
,但如果这是一个好方法?
【问题讨论】:
也许这属于Code Review。 @cqcn1991:你的问题没有很好的定义。您已经找到了如何截断到特定数量的十进制数字。如果您不确定这是“一种好方法”,那么您的解决方案的实际限制是什么? @DanielPryden,我对此感到有点奇怪。我的意思是,如果大多数时候,数字看起来这么长,那么每个人都需要截断它们吗?这不是重复吗?所以我想知道是否还有其他方法。 @ZachGates,谢谢!没想到有这样的板子。 @cqcn1991 是什么让您产生“每个人都需要截断它们”的想法?出于我的目的,我通常对浮点的默认 Python 字符串表示感到满意。 【参考方案1】:实际上,np.round 在这种情况下效果很好
> from pandas import DataFrame
> import numpy as np
> a = DataFrame(np.random.normal(size=10).reshape((5,2)))
0 1
0 -1.444689 -0.991011
1 1.054962 -0.288084
2 -0.700032 -0.604181
3 0.693142 2.281788
4 -1.647281 -1.309406
> np.round(a,2)
0 1
0 -1.44 -0.99
1 1.05 -0.29
2 -0.70 -0.60
3 0.69 2.28
4 -1.65 -1.31
您还可以通过简单地用舍入值覆盖单个列来舍入:
> a[1] = np.round(a[1],3)
> a
0 1
0 0.028320 -1.104
1 -0.121453 -0.179
2 -1.906779 -0.347
3 0.234835 -0.522
4 -0.309782 0.129
【讨论】:
所以,在大多数情况下,你先计算然后解析结果?还是把它留在那里?我主要担心的是x
看起来真的很ugly
。
通常,我发现我只在最后阶段进行四舍五入,当我打算将我的结果“显示”为表格并在此之前保留我的结果,如果你不想实际上更改数字但仍希望它们“看起来不错”您可以做的是使用熊猫显示选项。 pandas.set_option('precision', 3)
以上是关于Python:数字太长怎么办? [复制]的主要内容,如果未能解决你的问题,请参考以下文章