【发布时间】:2021-09-11 01:10:56
【问题描述】:
我有一个包含 4 列的数据框。我想为 N 列中的每个数据输入获取一列(列 ey)的最大 40 个值,同时保留其他 2 列的数据(即:我不想删除或丢失其他两列的数据)。
问题与这篇文章非常相似:Filter pandas Dataframe based on max values in a column。不同之处在于我正在寻找 40 个最大值,而不是最大值,而且我的数据框有更多列。
下表是我所拥有的表的一个示例,而它在每列 N 个数据集中只有 4 行(实际数据框每个 N 有更多行)。
N Ret upside_tri ey
1 -0.1478 -14.4097 -0.3702
1 0.7571 -9.4190 -0.4609
1 -0.0045 -1.0086 0.0272
1 0.3458 -7.1714 0.0000
2 -0.1218 -9.7807 -1.5318
2 0.2283 14.7490 -0.2328
2 0.2798 -0.4965 0.1343
2 0.2273 0.0770 0.0368
3 0.0904 0.1881 -0.2433
3 -0.0526 1.8242 0.2686
3 0.0822 4.9049 -0.0416
3 0.2182 -1.0752 -0.0331
4 0.0201 4.6152 0.2242
4 0.0527 -0.3465 0.1953
4 0.1169 -1.2500 -0.0266
4 -0.1854 2.7845 0.0947
5 0.0192 -0.4258 0.1783
5 -0.0319 0.9984 0.2314
5 0.0800 1.9057 0.2101
5 -0.0447 -0.5313 0.0865
假设我想要每个 N 的 ey 的 2 个最大值(我的实际希望是拥有 40 个最大值),期望的结果会变成这样:
N Return upside ey
1 -0.0045 -1.0086 0.0272
1 0.3458 -7.1714 0.0000
2 0.2798 -0.4965 0.1343
2 0.2273 0.0770 0.0368
3 -0.0526 1.8242 0.2686
3 0.2182 -1.0752 -0.0331
4 0.0201 4.6152 0.2242
4 0.0527 -0.3465 0.1953
5 -0.0319 0.9984 0.2314
5 0.0800 1.9057 0.2101
【问题讨论】:
标签: python pandas dataframe group-by max