Pandas:按名称分组并以最近的日期取行

我有一个带有列的 Pandas DataFrame A, B, C, D, date。我想过滤掉Aand 的重复项B,保留date.


所以如果我有两行看起来像:


A B C D date


1 1 2 3 1/1/18


1 1 2 3 1/1/17

正确的输出是:


A B C D date


1 1 2 3 1/1/18

我可以通过循环来做到这一点,但我想使用df.groupby(['A', 'B'])然后通过获取date每个组中的最大值进行聚合。


我试过:


df.groupby(['A', 'B']).agg(lambda x: x.iloc[x.date.argmax()])


但我得到:


AttributeError: 'Series' object has no attribute 'date'

知道我做错了什么吗?


编辑:嗯,如果我这样做:


df.groupby(['A', 'B']).UPDATED_AT.max()

我得到的大部分都是我想要的,但我失去了专栏D和C......


眼眸繁星
浏览 245回答 3
3回答

萧十郎

试试df.groupby(['A', 'B']).agg(lambda x: x.iloc[x['date'].argmax()]) 熊猫有自己的日期对象。也许熊猫对系列名称感到困惑。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python