【问题标题】:How to apply if/else logic in python for an excel file? (dates)如何在 python 中为 excel 文件应用 if/else 逻辑? (日期)
【发布时间】:2021-08-27 06:45:18
【问题描述】:

strong text我得到了一个包含日期的 Excel 文件,从 2019 年到 2021 年。我想应用某些规则,比如销售是在 2019 年 5 月 4 日到09.05.2019 然后是促销号 1,等等。输出在这里

期望的结果

促销文件

【问题讨论】:

    标签: python excel pandas numpy


    【解决方案1】:

    使用Series.between 作为掩码并通过numpy.where 设置新值:

    import numpy as np
    
    df['date'] = pd.to_datetime(df['date'], dayfirst=True)
    mask = df['date'].between('2019-05-04', '2019-05-09')
    df['new'] = np.where(mask, 'promo number 1', 'no promo')
    

    如果有多个值,例如在字典中:

    d = {
         '25% sales': ('2019-04-29','2019-04-30'),
         '40% sales': ('2019-05-12','2019-05-15'),
         '50% sales': ('2019-05-18','2019-05-22')
        }
    
    df['date'] = pd.to_datetime(df['date'], dayfirst=True)
    
    for val, (date1, date2) in d.items():
        mask = df['date'].between(date1, date2)
    
        df.loc[mask, 'new'] = val
    
    df['new'] = df['new'].fillna('no promo')
    

    【讨论】:

    • 谢谢!我应该通过导入 numpy 库在 jupyter 中运行此代码吗?
    • @Arty - 当然,添加到答案中。
    • 谢谢!!有没有办法放很多日期?就像我收到了 100 多个不同日期的促销活动一样,只是想知道是否有更简单的方法
    • @Arty - 输入看起来如何?一些日期时间对?一些循环?
    • 添加到原始问题
    猜你喜欢
    • 2017-08-30
    • 2021-02-10
    • 1970-01-01
    • 2015-10-12
    • 2011-03-13
    • 2016-03-24
    • 1970-01-01
    • 2017-06-08
    • 1970-01-01
    相关资源
    最近更新 更多