2015-08-08 54 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

相關問題