【问题标题】:Python equivalent of SQL: SELECT w/ MAX() and GROUP BYSQL 的 Python 等效项:SELECT w/MAX() 和 GROUP BY
【发布时间】:2016-10-11 22:46:07
【问题描述】:

我有这样的数据:

df = pd.DataFrame( {
    'ID': [1,1,2,3,3,3,4],
    'SOME_NUM': [8,10,2,4,0,5,1]
} );

df
    ID    SOME_NUM
0   1     8
1   1     10
2   2     2
3   3     4
4   3     0
5   3     5
6   4     1

我想按 ID 列进行分组,同时将 SOME_NUM 的最大值保留为单独的列。这在 SQL 中很容易:

SELECT ID,
       MAX(SOME_NUM)
FROM DF
GROUP BY ID;

但我无法找到等效的 Python 代码。看起来这应该很容易。谁有解决办法?

想要的结果:

    new_df
    ID    SOME_NUM
0   1     10
1   2     2
2   3     5
6   4     1

【问题讨论】:

标签: python sql pandas group-by max


【解决方案1】:

看看你是如何使用 Pandas...使用内置的 groupby 功能

df.groupby("ID").max()

【讨论】:

  • 这可以扩展到多列吗?我认为我没有把我的假设弄得那么复杂。实际上,我有多个列,并且每个 ID 都需要一行,而 SOME_NUM 和 OTHER_NUM 和 YET_ANOTHER_NUM 的 MAX 等。我可以编辑原始帖子以反映这一点,除非它是一个非常简单的扩展。感谢您的帮助。
  • 没关系。我刚试过这个,它也适用于多个列。这就是我所需要的。谢谢!
猜你喜欢
  • 1970-01-01
  • 2013-04-17
  • 2010-11-20
  • 1970-01-01
  • 1970-01-01
  • 2015-02-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多