【发布时间】:2020-12-06 02:39:52
【问题描述】:
我已经学习了 2 周的 pandas 数据框。一开始,一切都很顺利,但现在我陷入了以下多操作练习:我得到了数据框:
df = pd.DataFrame({
'Mountain Range': ['A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B', 'C', 'C', 'C', 'C', 'D', 'D', 'D', 'D'],
'Peak': ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'r', 's'],
'Height above sea level': [2340, 3050, 4220, 2675, 2980, 3300, 3405, 3410, 2970, 2840, 2780, 3140, 3210, 2885, 3000, 3110, 2640, 2635]
})
我需要创建一个函数来返回最高山脉的名称(“A”、“B”、“C”或“D”),仅查看山脉中存在的三个最高峰。我尝试过groupby、nlargest、sort_values、sum的组合,但都失败了。
我试过了-
df.set_index(['Mountain Range']).nlargest(3, 'Height above sea level').idxmax()
df.groupby(['Mountain Range'])['Height above sea level'].sum().sort_values(ascending=False)
df.groupby(['Mountain Range']).nlargest(3, 'Height above sea level).sum()
我不知道如何将 nlargest 或 sum 分别应用于每个组(山脉),而不是整个数据帧
【问题讨论】:
-
我不明白这与获得最高峰的山脉有何不同。
-
可能我说的不够清楚——看三个最高峰,就是根据三个最高峰的高度之和。
-
请展示你做了什么。你提到的一些功能是一个有效的解决方案,很可能你是在正确的轨道上
-
另外,请具体说明您的标题,例如“将每组中最大的三个元素相加”。 “复杂”不适用。
-
感谢您的回复。我修改了帖子标题。我试过了: