groupby.apply(..)后Pandas drop group列

时间:2017-04-18 05:40:24

标签: python pandas dataframe group-by pandas-groupby

        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

有人可以帮忙吗?

3 个答案:

答案 0 :(得分:8)

通过将uid传递给group_keys=False

,您可以避免首先在索引中加入groupby
df.groupby('uid', group_keys=False).apply(lambda x: x.tail(len(x) // 5))

   uid  iid  val
4    1    5  5.5

答案 1 :(得分:5)

使用reset_indexdroplevel

df = df.reset_index(level=0, drop=True)


df = df.reset_index(level='uid', drop=True)

或者:

df.index = df.index.droplevel(0)

答案 2 :(得分:0)

您可以将as_index设置为False,以便从df分组中删除索引。

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