Python 3.x 逻辑运算符在中工作不正常

Python 3.x 逻辑运算符在中工作不正常,python-3.x,pandas,pandas-groupby,logical-operators,Python 3.x,Pandas,Pandas Groupby,Logical Operators,经过一番挣扎,我终于来到这里寻求帮助 我有一个数据框,它是groupby函数的结果,如下所示 >>temp.head() PO_Amount PO_Amount_Mean id 0 3756.6 3756.6 0 1 3756.6 3756.6 1 2 11269.8 11269.8 2 3 11269.8 11269.8 3 4

经过一番挣扎,我终于来到这里寻求帮助

我有一个数据框,它是groupby函数的结果,如下所示

 >>temp.head()

     PO_Amount  PO_Amount_Mean  id     
0     3756.6          3756.6     0
1     3756.6          3756.6     1
2    11269.8         11269.8     2
3    11269.8         11269.8     3
4     3756.6          3756.6     4


temp.dtypes
Out[141]: 
PO_Amount         float64
PO_Amount_Mean    float64
id                  int32
dtype: object
如果PO_Amount等于PO_Amount,我将尝试获取数据

temp[temp['PO_Amount']==temp['PO_Amount_Mean']]
Out[142]: 
   PO_Amount  PO_Amount_Mean  id
0     3756.6          3756.6   0
1     3756.6          3756.6   1
4     3756.6          3756.6   4
6     3756.6          3756.6   6

不知道为什么索引2和3会出现在输出中。请帮忙。

谢谢大家的回复。这是浮点精度的问题

temp.PO_Amount_Mean[2]
Out[10]: 11269.800000000001

temp.PO_Amount[2]
Out[11]: 11269.8

我假设你所说的“正在投入产出”实际上是相反的意思。如果熊猫认为它们不相等,你应该看看区别:什么是
temp['PO\u Amount']-temp['PO\u Amount\u Mean']
show?无法重现这个问题,当我尝试时整个数据帧都会显示这可能是一个浮点精度问题。Pandas的工作原理与预期完全一致,但是您需要先将数量和平均数转换为小数,或者使用类似于
np.close
的方法来比较浮点列。尝试查看
print(temp.PO\u amount[2])
print(temp.PO\u amount\u mean[2])
但是有什么方法来比较这样的浮点,除了四舍五入?你可以用。我相信这个案子在默认的容忍范围之内