首页 > 解决方案 > 倒数第二个值(熊猫,Python)

问题描述

我有以下数据框:

指数 一个
0 一个 3
1 一个 4
2 b 9
3 b 6
4 一个 2
5 b 1

我想获得每组“A”列的倒数第二个值。我已经想出了如何使用 groupby 获取 min() 值:

df_grouped_last = df.groupby('A').agg({'B': ['min']})

但我需要得到倒数第二个值(“最后一个”),这样我才能得到:

指数 一个 倒数第二个 B
0 一个 3
1 b 6

在另一项工作中,我还需要倒数第三和第四。

有人知道如何编码吗?

非常感谢 !文森特

标签: pythonpandasdataframenumpymin

解决方案


查看您的预期输出,假设列B是为每个组排序的。如果是这种情况,请使用sort_values并结合nth

(df.sort_values(['A', 'B'])
   .groupby('A', sort = False)
   .B
   .nth(-2) # familiar python construct ... 
            # takes second value from the bottom, per group
   .reset_index()
 )

   A  B
0  a  3
1  b  6

推荐阅读