pandas - 如何在多列的groupby的某个级别下获得第一组?
问题描述
我对第 2 级中的第一组感兴趣,并希望获取与其相关的所有行。
看看下面的例子:
col1 col2 col3 col4
1 34 green 10
yellow 20
orange 30
89 green 40
yellow 50
orange 60
2 89 green 15
yellow 25
orange 35
90 green 45
yellow 55
orange 65
请注意,每个级别 2 组的行长不一定是 3。
现在我想得到col2下的所有第一组,那么结果应该是:
col1 col2 col3 col4
1 34 green 10
yellow 20
orange 30
2 89 green 15
yellow 25
orange 35
示例和问题修改自问题:How to get the first group in a groupby of multiple columns?
我已经尝试过该get_group
方法,但似乎无法解决这个特定问题。
我想知道是否有任何一行代码可以解决这类问题?谢谢!
解决方案
有一个快速的stack/unstack
解决方案:
df.unstack('col3').groupby(level=0).head(1).stack('col3')
输出:
col4
col1 col2 col3
1 34 g 10
o 30
y 20
2 89 g 15
o 35
y 25
推荐阅读
- google-cloud-platform - 使用 REST API 在 GCP 中创建服务帐户密钥
- ios - UserDefaults.standard.removeObject(forKey: ) 是否有可能失败?
- c++ - 如何要求用户输入整数,直到他在 C++ 中输入空行?
- sql - 多个连接列上的多个 STRING_AGG 会导致聚合膨胀
- c++11 - 函数返回一个额外的 0
- php - PHP 上传到 imgur 相册不起作用?
- java - 我应该如何确定数据库中是否已经存在数据
- django - 如何在 django rest-framework 中获得多对多字段过滤器?
- c# - 将 CameraCaptureUI 中的图像保存到文件夹
- objective-c - OAuth - 我在哪里可以捕获从外部浏览器回调我的应用程序的“重定向 URI”?