在Pandas和NumPy中处理0和-0

时间:2015-02-02 07:05:43

标签: python python-2.7 numpy pandas

在pandas中进行元素倍增后,我在其中一个dataframe元素中得到负零值,在另一个dataframe元素中得到一个常规零值。 Python表明它们是相同的,但以不同的方式显示它们。它们在什么水平上不相等,以后会如何影响计算呢?

In[100]:
import numpy as np
import pandas as pd

In[101]:
df_a = pd.DataFrame([[-5.2,3.1,2.8],[1,2,3],[4,5,4]], columns=['Col0','Col1','Col2'], index=['Row0','Row1','Row2'])
df_b = pd.DataFrame([[0,0,2],[1,2,3],[4,5,4]], columns=['Col0','Col1','Col2'], index=['Row0','Row1','Row2'])
df_c = df_a * df_b

In[102]: print df_a
Out[102]:
      Col0  Col1  Col2
Row0  -5.2   3.1   2.8
Row1   1.0   2.0   3.0
Row2   4.0   5.0   4.0

In[103]: print df_b
Out[103]:
      Col0  Col1  Col2
Row0     0     0     2
Row1     1     2     3
Row2     4     5     4

In[104]: print df_c
Out[104]:
      Col0  Col1  Col2
Row0    -0     0   5.6
Row1     1     4   9.0
Row2    16    25  16.0

In[105]:
negative_zero = df_c.iloc[0,0]
positive_zero = df_c.iloc[0,1]
print(negative_zero == positive_zero)

Out[105]:
True

In[106]: print(type(negative_zero))
Out[106]: <type 'numpy.float64'>

In[107]: print(type(positive_zero))
Out[107]: <type 'numpy.float64'>

1 个答案:

答案 0 :(得分:0)

-0等于0。带符号的零不应影响任何进一步的计算。

您可以在stackoverflow上查看关于此主题的WikipediaIEEE-standardvarious other articles