Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 熊猫减去两列工作不正常_Python_Pandas - Fatal编程技术网

Python 熊猫减去两列工作不正常

Python 熊猫减去两列工作不正常,python,pandas,Python,Pandas,使用下面的代码,结果应显示0,表示美元不同。它适用于除下面3行之外的所有其他行。你知道为什么吗?我已手动签入Excel,结果为0 df['Dollar_Different'] = df['R_Revenue'] - df['S_Revenue'] 您确定R_收入和S_收入正是这些值,并且没有被截断为2位小数吗?您可以先尝试使用四舍五入,然后再进行减法运算,看看结果是否为0。可能您使用的是浮点类型(这是默认值)。浮点不能精确地表示每个实数。也许,这两列中的数字实际上略有不同,但显示它们时只有两个

使用下面的代码,结果应显示0,表示美元不同。它适用于除下面3行之外的所有其他行。你知道为什么吗?我已手动签入Excel,结果为0

df['Dollar_Different'] = df['R_Revenue'] - df['S_Revenue']

您确定R_收入和S_收入正是这些值,并且没有被截断为2位小数吗?您可以先尝试使用四舍五入,然后再进行减法运算,看看结果是否为0。

可能您使用的是浮点类型(这是默认值)。浮点不能精确地表示每个实数。也许,这两列中的数字实际上略有不同,但显示它们时只有两个十进制数字

在处理财务数据的应用程序中,避免使用浮点类型,这正是您在这里看到的原因。还有其他一些数据类型是为了准确地表示十进制数而设计的。但IIRC熊猫不支持任何这些


您可以使用的一个简单解决方法是将收入数量表示为整数金额:单个整数字段表示以美分为单位的总数量,或者两个字段,一个是美元部分,另一个是美分部分。

我将源数据类型更改为整数,现在所有数据都匹配。

这些数字可能有一些被截断的小数等。加上这些差异,按照大多数计算机标准,技术上是0。也许这会给你一些背景知识,谢谢。我将研究更正小数,看看这是否会产生影响。