Python- Pandas,过滤器取组中的最后一个元素,然后是组中的第一个元素
Python- Pandas, filter take last element in group, then first element in group
从这里跟进问题:
在 pandas 中,如何删除第一个组中的最后一行,然后删除组中所有后续条目的第一行?
例如
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
首先检查第一层的第一个值 get_level_values
and then groupby
with apply
- first group by tail
and all another by 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
从这里跟进问题:
在 pandas 中,如何删除第一个组中的最后一行,然后删除组中所有后续条目的第一行?
例如
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
首先检查第一层的第一个值 get_level_values
and then groupby
with apply
- first group by tail
and all another by 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