如何比较两列之间的值是不是具有相同的数字〜熊猫

Posted

技术标签:

【中文标题】如何比较两列之间的值是不是具有相同的数字〜熊猫【英文标题】:How to Compare if the Values between 2 Columns have around the Same Number ~ Pandas如何比较两列之间的值是否具有相同的数字〜熊猫 【发布时间】:2021-12-19 05:42:28 【问题描述】:

我有一个 df,我正在尝试比较 2 列,如果它们在同一行中具有大约相同的值,我希望将其从 df 中删除。 即:

   A       B  
1  3.21   3.15
2  6.98   2.07
3  5.41   8.95
4  0.32   0.30

我只希望 df 中保留第 2/3 行,因为在第 1/4 行中,A 和 B 彼此相似。

如果 A 列中的 i 在某个范围内(B 行值的 +/- 15%),我尝试过删除该行,但它不起作用。不知道 pandas 是否有某种内置功能。

【问题讨论】:

看起来您想有条件地删除行,对吗?上一篇文章可能对***.com/questions/13851535/… 有所帮助,我认为它看起来像df.drop(df[((df.A -df.B)/ df.B) < .15].index) @bartius 对此一无所知。谢谢! 【参考方案1】:

您可以通过将rtol 参数传递给numpy.isclose 来做到这一点:

result = df[~np.isclose(df.A, df.B, atol=0, rtol=0.15)]
#       A     B
# 2  6.98  2.07
# 3  5.41  8.95

【讨论】:

【参考方案2】:

您可以定义允许值的下限和上限

lower = df["A"]*0.85
upper = df["A"]*1.15

然后使用pandas.Series.between过滤

df[~df["B"].between(lower, upper)]

【讨论】:

以上是关于如何比较两列之间的值是不是具有相同的数字〜熊猫的主要内容,如果未能解决你的问题,请参考以下文章

如果两列中的值相同,则合并熊猫中的单元格

熊猫,对于每一行获取两列之间最大列的值

如何根据合并的数据框之一的两列的值在熊猫数据框中添加值

如何比较两列之间的字符,并使用宏突出显示相同的单元格

如何选择在两列中具有相同值集的行,从而连接第三列中的值?

如何比较具有字符串和整数的列?蟒蛇熊猫