2013-12-16 10 views
3

DataFrame을 사용하여 플롯을 시도하고 있지만 작동하지 않습니다 (자세한 내용은 this과 비슷한 스레드 참조). 나는 문제의 일부가 내 DataFrameobjects 만들어진 것 같다있을 것 같아요 : 나는 모든 값이 float를 입력 변환한다면오브젝트를 float로 변환하면 너무 많은 정밀도를 잃지 않습니다 - 팬더

>>> df.dtypes 
Field   object 
Moment   object 
Temperature object 

그러나, 내가 정밀 많이 잃게됩니다. 모멘트 열의 모든 값은 -132.2036E-06이며 float으로 변환하면 df1 = df.astype(float)으로 변경되어 -0.000132이됩니다.

누구나 내가 정밀도를 어떻게 보존 할 수 있는지 알고 있습니까?

+2

을 변경하려면이 작업을 수행 할 수 있습니다. astype 뒤에''df.values''를 수행하면 원시 numpy 값이 표시됩니다. 32 비트 플랫폼에서 64 비트로 만들려면''np.float64''로 astype을 사용할 수 있습니다. – Jeff

+0

다른 형식을 지정해도 값의 일부 자릿수가 손실되지는 않습니다. df1을 float ('- 132.2036E-06')와 비교하십시오. –

+0

@Jeff @Lorenzo 감사합니다 얘들 아, 인쇄 된 가치가 저장된 값과 다를 것이라고 깨닫지 못했습니다. 'df.values'는 실제로 그러한 정밀도의 손실을 보여주지 못했습니다. – user3087409

답변

5

당신이 방금 인쇄 된 정밀 거의 확실하다 표시 정밀

In [1]: df = DataFrame(np.random.randn(5,2)) 

In [2]: df 
Out[2]: 
      0   1 
0 0.943371 0.171686 
1 1.508525 0.005589 
2 -0.764565 0.259490 
3 -1.059662 -0.837602 
4 0.561804 -0.592487 

[5 rows x 2 columns] 

In [3]: pd.set_option('display.precision',12) 

In [4]: df 
Out[4]: 
       0    1 
0 0.94337126946 0.17168604324 
1 1.50852519105 0.00558907755 
2 -0.76456509501 0.25948965731 
3 -1.05966206139 -0.83760201886 
4 0.56180449801 -0.59248656304 

[5 rows x 2 columns] 
+0

감사합니다. @ 제프. 나는 하루 종일 이것으로 고생했습니다. –