查找两个量之间的最小差异的行对

时间:2018-07-12 17:19:17

标签: python pandas

我有一个带有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循环,但是我正在寻找更有效的解决方案。 谢谢

1 个答案:

答案 0 :(得分:3)

您可以使用:

df = df.sort_values(['a', 't'], ascending=False)
diff_ = df['t']-df['t'].shift(-1)
min_idx = diff_[df['a'] == df['a'].shift(-1)].idxmin()
df.loc[min_idx:min_idx+1]

输出:

    a   t
0   abc 4
1   abc 3