【问题标题】:Comparing one date with starting date and ending date with duplicates将一个日期与开始日期进行比较,将结束日期与重复日期进行比较
【发布时间】:2021-02-10 09:56:49
【问题描述】:

我有以下数据样本,我需要创建一个函数,该函数将获取销售日期并将其与以下日期进行比较并返回折扣名称和百分比,但如下所示,折扣日期不是唯一的,有些时间重叠,所以如果日期落在两个不同的折扣名称中,它必须根据百分比返回最高的重复折扣名称,以防销售日期超过一个。

Discount Name   Start Date  End Date    Percentage
0   First   2020-07-24  2020-11-25  0.10
1   First   2020-09-13  2020-10-29  0.10
2   First   2020-12-07  2020-12-10  0.10
3   First   2020-12-28  2021-01-19  0.10
4   First   2020-06-14  2020-06-14  0.10
5   Second  2020-06-16  2020-06-18  0.15
6   Second  2020-06-21  2020-06-22  0.15
7   Second  2020-06-22  2020-06-23  0.15
8   Second  2020-07-07  2020-07-08  0.15
9   Third   2020-06-02  2020-06-12  0.20
10  Third   2020-05-19  2020-06-01  0.20
11  Third   2020-05-06  2020-05-17  0.20
12  Third   2020-04-30  2020-05-03  0.20

Screen Shot of Dataframe

我真的希望有人可以帮助我。谢谢

【问题讨论】:

    标签: pandas dataframe date duplicates compare


    【解决方案1】:

    这个函数应该可以解决问题

    def discout_rate(df, sales_date):
        return df[(df['Start Date'] <= sales_date) & (df['End Date'] >= sales_date)]['Percentage'].max()
    

    sales_date 应该是 datetime.datetime 类型,Start DateEnd Date 列也是。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-11
      • 2014-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多