【发布时间】:2021-08-27 06:45:18
【问题描述】:
strong text我得到了一个包含日期的 Excel 文件,从 2019 年到 2021 年。我想应用某些规则,比如销售是在 2019 年 5 月 4 日到09.05.2019 然后是促销号 1,等等。输出在这里
期望的结果
【问题讨论】:
strong text我得到了一个包含日期的 Excel 文件,从 2019 年到 2021 年。我想应用某些规则,比如销售是在 2019 年 5 月 4 日到09.05.2019 然后是促销号 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')
【讨论】: