【发布时间】:2018-07-13 01:48:34
【问题描述】:
我有一个包含 a 和 t 列的数据框 df,其中“a”列包含字符串,“t”列包含整数。我想从数据框中选择所有行对,其中该行对的“a”列中的值相同,并且该对的“t”列中的值差异具有最小值。例如:
df = a t
abc 4
abc 3
def 2
abc 1
我想得到以下结果:
df = a t
abc 4
abc 3
我知道我们可以在同一个数据框中使用两个 for 循环,但我正在寻找更有效的解决方案。 感谢期待
【问题讨论】:
-
循环可能看起来很笨拙,但我并没有真正看到显着减少运行时间的方法(因为您基本上会以相同的次数枚举成对差异)。你觉得你的代码效率低吗?
-
您能否在问题中添加更多数据并获得预期结果?
-
我基本上想在“a”列中找到具有相同值的对,并且该对应该在“t”列的值上具有最小差异
-
你有没有想过当你有多个相同的成对距离时你会遇到这样的情况?想象一下,您还有另一行
abc 0甚至abc 2。如果这些存在,您希望发生什么? -
如果我们有多个相同的成对距离,则应返回两行。但是,在您的问题中,无论如何,4 和 3 之间的差异是最小的,因此即使您提供的行已添加到数据框中,也应返回该对