从这里跟进问题:drop first and last row from within each group
在pandas中,如何删除组中所有后续条目的第一组然后第一行的最后一行?
e.g
X Y
a a 0 1
a 2 3
c 4 5
d 6 7
b e 8 9
f 10 11
g 12 13
c h 14 15
i 16 17
d j 18 19
我想要这个
X Y
a d 6 7
b e 8 9
c h 14 15
d j 18 19
答案 0 :(得分:2)
首先按get_level_values
检查第一级的第一个值,然后使用groupby
检查apply
的第一个值 - tail
的第一个组和head
的所有其他值:
first = df.index.get_level_values(0)[0]
df = df.groupby(level=0, sort=False, group_keys=False)
.apply(lambda x: x.tail(1) if x.name == first else x.head(1))
print (df)
X Y
a d 6 7
b e 8 9
c h 14 15
d j 18 19