如何在没有任何统计数据(如 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 中的平均值或计数)的情况下进行简单分组?的主要内容,如果未能解决你的问题,请参考以下文章
如何获得按 numpy 和 pandas 中的变量分组的平均值? [复制]
如何通过 2x2 平均内核对 pandas 数据帧进行下采样