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
上記のデータフレームから、最初の列を削除します。これは次のとおりです。
uid
1
2
2
2
2
2
抽出します
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
誰かが助けることができますか?
group_keys=False
をuid
に渡すことで、最初にgroupby
をインデックスに含めることを回避できます。
df.groupby('uid', group_keys=False).apply(lambda x: x.tail(len(x) // 5))
uid iid val
4 1 5 5.5
使用する - reset_index
または droplevel
:
df = df.reset_index(level=0, drop=True)
df = df.reset_index(level='uid', drop=True)
または:
df.index = df.index.droplevel(0)
as_index
をFalse
として設定して、dfでグループ化されたインデックスからインデックスを削除できます。
df.groupby('uid', as_index=False)