如何在没有任何统计数据(如 Pandas 中的平均值或计数)的情况下进行简单分组?

Posted

技术标签:

【中文标题】如何在没有任何统计数据(如 Pandas 中的平均值或计数)的情况下进行简单分组?【英文标题】:How to do a simple group by without any statistics like mean or count in Pandas? 【发布时间】:2022-01-13 20:52:17 【问题描述】:

我有一个包含许多列的数据框。

我想做一些类似于 Alteryx 中的摘要工具的事情。即一个简单的分组。我对平均值、计数或大小等统计数据不感兴趣。

我不想要分层输出

我该怎么做?

df.head()

      Unnamed: 0    home_odds    draw_odds    away_odds  country    league            datetime             home_team        away_team      home_score    away_score
--  ------------  -----------  -----------  -----------  ---------  ----------------  -------------------  ---------------  -----------  ------------  ------------
 0             0         1.36         4.31         7.66  Brazil     Copa do Nordeste  2020-02-07 00:00:00  Sport Recife     Imperatriz              2             2
 1             1         2.62         3.3          2.48  Brazil     Copa do Nordeste  2020-02-02 22:00:00  ABC              America RN              2             1
 2             2         5.19         3.58         1.62  Brazil     Copa do Nordeste  2020-02-02 00:00:00  Frei Paulistano  Nautico                 0             2
 3             3         2.06         3.16         3.5   Brazil     Copa do Nordeste  2020-02-02 22:00:00  Botafogo PB      Confianca               1             1
 4             4         2.19         2.98         3.38  Brazil     Copa do Nordeste  2020-02-02 22:00:00  Fortaleza        Ceara                   1             1

我想要一个简单的按这两列分组

例如

    country    league
--  ---------  ----------------
 0  Brazil     Copa do Nordeste
 1  World      World Cup
 2  Australia  FFA Cup
 3  Australia  A League
 4  Brazil     Serie A

它的正确代码是什么?

【问题讨论】:

请提供一个简单的可重现数据框输入。你的输出有世界杯。那是从哪里来的?提供足够的数据。同时,您可能正在考虑 drop_duplicates 函数 是的!这就是工作。谢谢! 【参考方案1】:

如果您想创建一个包含两列显示哪个国家/地区拥有哪个联赛的数据框,请选择相关列和.drop_duplicates 方法:

out = df[['country', 'league']].drop_duplicates()

但是如果你想创建一个数据框来保存来自其他列的数据,你可能想要这样做:

out = df.groupby(['country', 'league']).agg(list)

【讨论】:

【参考方案2】:

您可以尝试使用 drop_duplicates() 函数。例如在下面的第一个数据帧中,您可以看到 13 条记录,而第二条只有 6 条记录。这要归功于 df = df.drop_duplicates()

【讨论】:

以上是关于如何在没有任何统计数据(如 Pandas 中的平均值或计数)的情况下进行简单分组?的主要内容,如果未能解决你的问题,请参考以下文章

pandas 中的动态滚动功能

如何在 Python 的滚动平均值计算中忽略 NaN

如何获得按 numpy 和 pandas 中的变量分组的平均值? [复制]

如何通过 2x2 平均内核对 pandas 数据帧进行下采样

如何在没有 numpy 或 pandas 的情况下从文本文件计算平均值

规范化 pandas 中的数据