我有一个包含列a和t的数据帧df,其中列"a“具有字符串,列"t”具有整数。我想从dataframe中选择所有行对,对于这些行对,行对的列"a“中的值是相同的,而列"t”中的值的差值具有最小值。例如:
df = a t
abc 4
abc 3
def 2
abc 1
我希望得到以下结果:
df = a t
abc 4
abc 3
我知道我们可以在同一个数据帧中使用两个for循环,但我正在寻找更有效的解决方案。期待中的感谢
发布于 2018-07-12 17:37:59
您可以使用:
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
https://stackoverflow.com/questions/51311274
复制相似问题