Reputation: 383
uid iid val
uid
1 1 1 5 5.5
2 3 1 4 3.5
2 2 1 4 3.5
2 7 1 4 3.5
2 9 1 4 3.5
2 11 1 4 3.5
From the dataframe above, I want to remove the first column, which is:
uid
1
2
2
2
2
2
and extract
uid iid val
1 1 5 5.5
3 1 4 3.5
2 1 4 3.5
7 1 4 3.5
9 1 4 3.5
11 1 4 3.5
Can someone help?
Upvotes: 11
Views: 19713
Reputation: 1488
you can set as_index
as False
to remove the index from the grouped by df.
df.groupby('uid', as_index=False)
Upvotes: 0
Reputation: 294258
You can avoid including the uid
in the index in the first place by passing group_keys=False
to the groupby
df.groupby('uid', group_keys=False).apply(lambda x: x.tail(len(x) // 5))
uid iid val
4 1 5 5.5
Upvotes: 17
Reputation: 862661
Use reset_index
or droplevel
:
df = df.reset_index(level=0, drop=True)
df = df.reset_index(level='uid', drop=True)
Or:
df.index = df.index.droplevel(0)
Upvotes: 7