我对第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
这个例子和问题是根据问题修改的。如何在多列的groupby中得到第一组?
我尝试了以下方法 get_group
方法,但它似乎不能解决这个具体问题。
我想知道是否有什么单行代码可以解决这种问题?Thx!
我们可以这样做
df.groupby(level=[0,2]).head(1)
Out[342]:
col4
col1 col2 col3
1 34 green 10
yellow 20
orange 30
2 89 green 15
yellow 25
orange 35
有一个快速 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