【问题标题】:Python Dataframe - only keep oldest records from each monthPython Dataframe - 仅保留每个月最旧的记录
【发布时间】:2022-02-16 22:38:46
【问题描述】:

我有一个带有日期列的 Pandas 数据框。我只想拥有每个月最旧的记录,并删除之前的所有记录。会有重复的,我想保留它们。我还需要一个只有月份和年份的新列。

输入

Provider date
Apple 01/01/2022
Apple 05/01/2022
Apple 20/01/2022
Apple 20/01/2022
Apple 05/02/2022
Apple 10/02/2022

输出:

Provider date month_year
Apple 20/01/2022 01/2022
Apple 20/01/2022 01/2022
Apple 10/02/2022 02/2022

【问题讨论】:

  • 既然 SO 不是一个代码编写服务,那么具体来说你在哪里实现这个?

标签: python pandas dataframe date


【解决方案1】:

使用Series.dt.strftime 创建列month_year,然后按GroupBy.transform 中的原始date 列比较每个组的最大日期时间,并在boolean indexing 中过滤:

df['date'] = pd.to_datetime(df['date'], dayfirst=True)

df = df.assign(month_year = df['date'].dt.strftime('%m/%Y'))

df = df[df.groupby(['Provider', 'month_year'])['date'].transform('max').eq(df['date'])]
print (df)
  Provider       date month_year
2    Apple 2022-01-20    01/2022
3    Apple 2022-01-20    01/2022
5    Apple 2022-02-10    02/2022

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-01-23
    • 2020-05-10
    • 1970-01-01
    • 2020-02-22
    • 2020-12-30
    • 1970-01-01
    • 2016-01-25
    • 2014-11-19
    相关资源
    最近更新 更多