Python 从浮点中删除一个小数,然后与另一个值进行比较
我有一个数据框,我正在熊猫中使用。我有两列要确定它们是否不相等。数据示例如下所示:Python 从浮点中删除一个小数,然后与另一个值进行比较,python,pandas,numpy,Python,Pandas,Numpy,我有一个数据框,我正在熊猫中使用。我有两列要确定它们是否不相等。数据示例如下所示: A B Compare 1002 3.1 31 Not Equal 1003 5 5 1004 1 3 Not Equal 我希望像第一行(1002)这样的行显示为相等,因为它们包含相同的数字。列A和B都是浮点64数据类型
A B Compare
1002 3.1 31 Not Equal
1003 5 5
1004 1 3 Not Equal
我希望像第一行(1002)这样的行显示为相等,因为它们包含相同的数字。列A和B都是浮点64数据类型
我尝试了以下方法:
df['column_a'].replace('.','')
我还试图找到一种方法,在值不是整数(3.1、2.2、1.4等)的情况下,将一个数字乘以10
我相信我也可以通过将B列中大于5的所有值除以10来实现相同的预期最终结果。我只关心0到5的值。我在上面看到的唯一值是5除以10
这是我试图完成的,但我得到一个错误(TypeError:invalid type comparison):
对于第1002行,使A列和B列中的值相等的最佳方法是什么?这值得一试:
df['Compare']=df['A'].str.replace(“.”,”).astype(int.eq(df['B'])
您走的方向是正确的,只需添加
aType
并使用.eq()
。如果您尝试先将浮点数转换为字符串
,然后删除小数点,最后将其转换回整数
?例如,int(str(num).replace(“.”,”)
其中num
是您的浮点数我认为您尝试删除句点的方法是正确的。您可能需要在两列上使用.apply()
方法,将它们都转换为字符串,并从左侧删除小数点。然后您就可以比较它们了。@Stephen如果您的列真的是float64,那么“31”将表示为31.0,5表示为“5.0”也是如此。请澄清,在这种情况下,你打算怎么做?3.1是否会被视为等于31.0?当我尝试此操作时,它最终会为每个条目生成两位数的列A。A列现在是[31 50 10]
df['column_b'] = np.where(df['column_b'] > 5, /10,'')