I have a very similar question to this one, but with a twist that the first row might come up in more than one group.
I have a pandas DataFrame
like following.
df = pd.DataFrame({'id' : [1,1,1,2,2,3,3,3,3,1,1,2,6,6,6,7,7],
'value' : ["first","second","second","first",
"second","first","third","fourth",
"fifth","second","fifth","first",
"first","second","third","fourth","fifth"]})
I want to group this by ["id","value"] and get the first row of each group.
id value
0 1 first
1 1 second
2 1 second
3 2 first
4 2 second
5 3 first
6 3 third
7 3 fourth
8 3 fifth
9 1 second
10 1 fifth
11 2 first
12 6 first
13 6 second
14 6 third
15 7 fourth
16 7 fifth
Expected outcome
id value
1 first
2 first
3 first
1 second
2 first
6 first
7 fourth
I tried the solutions from the linked question, but it works like this:
>>> df.groupby('id').first()
value
id
1 first
2 first
3 first
6 first
7 fourth
Basically, the groupby pulls both groups of 1 and 2 together and only looks at the first one.