Python 3.x 逻辑运算符在中工作不正常
经过一番挣扎,我终于来到这里寻求帮助 我有一个数据框,它是groupby函数的结果,如下所示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
>>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])
但是有什么方法来比较这样的浮点,除了四舍五入?你可以用。我相信这个案子在默认的容忍范围之内