首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python Pandas- Groupby列以获取Pandas dataframe列中的两个峰值

Python Pandas- Groupby列以获取Pandas dataframe列中的两个峰值
EN

Stack Overflow用户
提问于 2018-08-05 02:54:02
回答 1查看 268关注 0票数 0

我使用Python Pandas对一个名为"Trace“的列进行分组。对于每个跟踪,都有一个包含两个峰值的"Value“列,我试图将它们传输到不同的数据帧中。第一个问题是,当我使用groupby时,它不会保留我想要选择的值所在行的其余数据。例如,如果一个Pandas数据帧有6列,那么我想在使用groupby之后保留所有6列。第二个问题是,我想要的两个最大值不是列中的两个最大值,而是数据集中的“峰值”。例如,附加的图像显示了我想要其值的两个峰值。我希望将两个峰值中每个峰值的最大值导出到新的数据帧中,并将先前数据帧中其他列的行值导出到新的数据帧中。

在下面的代码中,我希望按"Trace“列分组,并在"Value”列中选取两个峰值,同时在选择峰值后仍保留"Sample“列。对于Trace 1,我想选择的峰值是52和21,对于Trace 2,我想选择的峰值是61和23。

代码语言:javascript
复制
d = {"Trace": [1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2], "Sample": [1,2,3,4,5,6,7,8,9,10,11,12,1,2,3,4,5,6,7,8,9,10,11,12], "Value": [1,2,3,7,52,33,11,4,2,21,10,3,3,7,15,61,37,16,6,3,11,23,4]}

有什么建议吗?我一直在使用.groupby("Trace")和.nlargest()。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-05 05:08:28

选择“峰值”让我感到困惑,除非你硬编码跟踪值,否则我认为你不会走得太远。

站在更明智的立场上,对于在这里搜索的人,我会发布获取groupbynlargest的解决方案--在这里获取所有字段--

代码语言:javascript
复制
df.groupby(['Trace']).apply(lambda x: x.nlargest(2, columns=['Value']))

输出

代码语言:javascript
复制
          Sample  Trace  Value
Trace                         
1     3        4      1     12
      4        5      1      9
2     13       4      2     15
      14       5      2     11

在这里,如果您正在寻找按Value列、按Trace分组的两个“峰值”值,这应该是一个很好的解决方案

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51688665

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档