2015-08-08 55 views
0

我想poloar转化为x-y面板:Python:如果数字太长,该怎么办?

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() 

这将产生 enter image description here

的问题是,x太长,我怎样才能使它更短?

我在How to turn a float number like 293.4662543 into 293.47 in python?找到,我可以做"%.2f" % 1.2399,但是如果这是一个好方法?

+1

也许,这属于在[**代码审查**](http://codereview.stackexchange.com/)。 –

+1

@ cqcn1991:你的问题没有很好的定义。您已经找到了如何截断到特定数量的小数位数。如果您不确定这是“一种好的方法”,那么您的解决方案的实际限制是什么? –

+0

@DanielPryden,我只是觉得有点奇怪。我的意思是,如果大多数情况下,这个数字看起来很长,那么每个人都需要让它们变成一团?这不是重复的吗?所以我想知道是否有任何其他方法。 – cqcn1991

回答

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 
+0

那么,在大多数情况下,您先计算并解析结果?或者只是把它留在那里?我主要关心的是'x'看起来真的很丑。 – cqcn1991

+0

通常情况下,我发现我只是在最后阶段回合时,我打算将我的结果“展示”为表格,并将结果保留原样,直到此时为止,如果您不想实际更改数字但仍想要他们“看起来不错”你可以做的是使用熊猫显示选项。 'pandas.set_option('precision',3)' – mirage007

相关问题