我有一个包含 A、B、C、D、日期
列的 Pandas DataFrame。我想过滤掉 A
和 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'])
然后通过取最大值来聚合 每个组中的日期
。
我试过:
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
...
最佳答案
你可以用
df.date=pd.to_datetime(df.date)
df.sort_values('date').drop_duplicates(['A','B'],keep='last')
A B C D date
0 1 1 2 3 2018-01-01
关于python - Pandas:按名称分组并以最近的日期行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53892344/