【发布时间】:2021-05-11 04:35:47
【问题描述】:
有一个包含 date 、 name 和 number 列的 df 。如果计数> 3,则尝试标记相同的名称记录。并且应该将状态标记为 old_employee 到最早的日期。
date name number
2021-05-06T07:35:03.000Z mark 123
2021-04-06T07:35:03.000Z mark 123
2021-03-03T07:35:03.000Z mark 123
2021-02-03T07:35:03.000Z mark 123
2021-05-06T07:35:03.000Z tom 4123
2021-04-06T07:35:03.000Z tom 4123
2021-03-03T07:35:03.000Z tom 4123
2021-02-06T07:35:03.000Z john 512
2021-02-06T07:35:03.000Z wood 512
2021-02-06T07:35:03.000Z wood 512
2020-05-06T07:35:03.000Z paul 723
2020-04-06T07:35:03.000Z paul 723
2020-03-03T07:35:03.000Z paul 723
2020-02-03T07:35:03.000Z paul 723
2020-02-03T05:35:03.000Z paul 723
2020-02-02T07:35:03.000Z paul 723
2020-02-01T07:35:03.000Z paul 723
2020-05-06T07:35:03.000Z tomy 623
2020-04-06T07:35:03.000Z tomy 623
2020-03-03T07:35:03.000Z tomy 623
2020-02-03T07:35:03.000Z tomy 623
2020-02-03T05:35:03.000Z tomy 623
2020-02-02T07:35:03.000Z tomy 623
如果同名记录超过 3 次,我们必须将最早日期的记录标记为 old_employee。
预期输出:
date name number status
2021-05-06T07:35:03.000Z mark 123
2021-04-06T07:35:03.000Z mark 123
2021-03-03T07:35:03.000Z mark 123
2021-02-03T07:35:03.000Z mark 123 old_employee
2021-05-06T07:35:03.000Z tom 4123
2021-04-06T07:35:03.000Z tom 4123
2021-03-03T07:35:03.000Z tom 4123
2021-02-06T07:35:03.000Z john 512
2021-02-06T07:35:03.000Z wood 512
2021-02-06T07:35:03.000Z wood 512
2020-05-06T07:35:03.000Z paul 723
2020-04-06T07:35:03.000Z paul 723
2020-03-03T07:35:03.000Z paul 723
2020-02-03T07:35:03.000Z paul 723 old_employee
2020-02-03T05:35:03.000Z paul 723 old_employee
2020-02-02T07:35:03.000Z paul 723 old_employee
2020-02-01T07:35:03.000Z paul 723 old_employee
2020-05-06T07:35:03.000Z tomy 623
2020-04-06T07:35:03.000Z tomy 623
2020-03-03T07:35:03.000Z tomy 623
2020-02-03T07:35:03.000Z tomy 623 old_employee
2020-02-03T05:35:03.000Z tomy 623 old_employee
2020-02-02T07:35:03.000Z tomy 623 old_employee
试过这个:
(df.groupby('name', as_index=False).apply(lambda x: x if len(x)==1 else x.iloc[[-3]])
.reset_index(level=0, drop=True))
【问题讨论】:
-
“记录最早的日期”是什么意思?如果有 4 个不同的日期,是否有包含多少个日期的标准?如果你说'记录'(单数),应该只有一个日期,对吧?如果有多个日期,我们如何决定包含多少个日期?
标签: python python-3.x pandas dataframe date