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