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

标签 python pandas

我有一个包含 A、B、C、D、日期 列的 Pandas DataFrame。我想过滤掉 AB 的重复项,保留具有 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()

我得到了大部分我想要的,但我丢失了列 DC...

最佳答案

你可以用

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/

相关文章:

python - 在 Azure 中运行 Python 脚本的选项

python - Ruby on Rails 相当于 python

python - 如何在 PyQt5 组合框中添加上标?

Python:具有最常见条目的数据子集

python - 图像处理 : Bad Quality of Disparity Image with OpenCV

python - Django 数据库路由

python - 如果存在特定模式(例如数字然后字母),如何将数据透视表应用于数据框列?

Python-根据列值获取百分比

python - 使用 groupby 和aggregate 在我似乎无法选择的第一个数据行顶部创建一个空行

python-3.x - 嘿,我可以在 pandas 中通过箱线图绘制一个组来删除未使用的类别吗?