python - 倒数第二个值(熊猫,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 |
在另一项工作中,我还需要倒数第三和第四。
有人知道如何编码吗?
非常感谢 !文森特
解决方案
查看您的预期输出,假设列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
推荐阅读
- c++ - DolphinDB中如何提高使用c plus plus API建表的性能
- ruby-on-rails - Rails 6:如何将特定样式表和外部 js 插件关联到布局
- c# - dotnet core System.Text.Json unescape unicode 字符串
- javascript - Chrome 扩展与网站的 Content-Security-Policy “object-src 'self' blob:”
- vb.net - 如何检查接收到的字符串中的特定单词?
- reactjs - 尝试开玩笑地模拟第三方库时出错
- java - 读取有错误的 CSV 文件并将“坏行”打印到另一个文件 Java
- amazon-elastic-beanstalk - 有没有办法让 Elastic Beanstalk 拥有多个外部 IP 地址?
- c# - 如何反序列化动态继承通用接口的类
- xml - 错误:元素“{http://www.w3.org/2003/05/soap-envelope}Envelope”:没有可用于验证根的匹配全局声明