如何获取每个包含pandas groupby的组中除最后一个条目外的所有条目?



我希望这样的东西会得到所有的,但最后一个条目组:

from io import StringIO
import pandas as pd
df = pd.read_table(StringIO("""A B
1 a
1 b
2 c
3 z
3 z
3 z"""), sep="s+")
g = df.groupby("A")
g.head(g.size() - 1)

我想用向量化函数来做,或者被告知为什么不可能:)

检查duplicated

out = df[df.duplicated('A',keep='last')]
Out[50]: 
A  B
0  1  a
3  3  z
4  3  z

tail

df.drop(g.tail(1).index)
Out[54]: 
A  B
0  1  a
3  3  z
4  3  z

沿着你的思路,尝试lambda:

df.groupby('A').apply(lambda x: x.iloc[:-1])

不太容易的方法,使用transform:

g = df.groupby('A')
df[g['A'].transform('size')-1 > g.cumcount()]

但是最简单和最快的:

df[~df.duplicated('A', keep='last')]

最新更新