如何比较两列之间的值是不是具有相同的数字〜熊猫
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)]
【讨论】:
以上是关于如何比较两列之间的值是不是具有相同的数字〜熊猫的主要内容,如果未能解决你的问题,请参考以下文章