web-dev-qa-db-ja.com

Pandas groupby.apply(..)の後にグループ列を削除します

        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

誰かが助けることができますか?

8
Mansumen

group_keys=Falseuidに渡すことで、最初にgroupbyをインデックスに含めることを回避できます。

df.groupby('uid', group_keys=False).apply(lambda x: x.tail(len(x) // 5))

   uid  iid  val
4    1    5  5.5
10
piRSquared

使用する - 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)
5
jezrael

as_indexFalseとして設定して、dfでグループ化されたインデックスからインデックスを削除できます。

df.groupby('uid', as_index=False)
0
disp_name