python - 如何按日期对值进行排序并按列删除重复项?

标签 python pandas

我有以下 pandas DataFrame df:

import pandas as pd

mydictionary = {'id': ['11X', '11X', '22X', '33A'],
    'grade': [68, 74, 77, 78],
    'checkdate': ["2019-12-26", "2019-12-27", "2019-12-26", "2019-12-25"]}

df = pd.DataFrame(mydictionary)

我想按 checkdate 对值进行排序,并按 id 删除重复项,同时保留最新条目。

预期结果是这样的:

id    grade   checkdate
11X   74      2019-12-27
22X   77      2019-12-26
33A   78      2019-12-25

我知道如何对值进行排序:

df.sort_values("checkdate")

此外,我知道如何删除重复项:

df.drop_duplicates(subset=["id"], keep='first', inplace=True)

但是如何将这两件事放在一起呢?

最佳答案

你可以尝试:

import pandas as pd

mydictionary = {'id': ['11X', '11X', '22X', '33A'],
                'grade': [68, 74, 77, 78],
                'checkdate': ["2019-12-26", "2019-12-27", "2019-12-26", "2019-12-25"]}

df = pd.DataFrame(mydictionary)

df['checkdate'] = pd.to_datetime(df['checkdate'])
df2 = df.sort_values(by=['checkdate']).drop_duplicates('id', keep='last')
print(df2)

结果:

    id  grade  checkdate
3  33A     78 2019-12-25
2  22X     77 2019-12-26
1  11X     74 2019-12-27

关于python - 如何按日期对值进行排序并按列删除重复项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59523506/

相关文章:

python - 重置 Pandas 数据框的列索引

python - 如何在 Django 中使用点作为千位分隔符

python - 如果某行包含 pandas 中的某个值,则删除该行

python - Pandas:查找一列中相隔 50 个单位的连续项目

python - 计算活人与死人的年龄

python - 在 pandas/numpy 中实现分段函数的正确方法

python - ipython 中的选项卡完整字典键

Python、Pandas 删除 Excel 中的行

python - 从字符串创建 Pandas 数据框(csv 格式)

python - 忽略索引的两个数据帧的快速减法(Python)