【发布时间】:2021-11-08 21:47:28
【问题描述】:
我想将日期在特定假期前 1 周和后 1 周的所有行标记为 = 1; = 0 否则。
最好的方法是什么?下面是我的代码,它只将元旦标记为 new_year = 1。我想要的是所有 3 行都有 new_year = 1(因为它们在元旦前后的 1 周内)。
注意:我希望代码适用于任何假期(例如感恩节、复活节等)。
谢谢!
# importing pandas as pd
import pandas as pd
import holidays
# Creating the dataframe
df = pd.DataFrame({'Date': ['1/1/2019', '1/5/2019', '12/28/2018'],
'Event': ['Music', 'Poetry', 'Theatre'],
'Cost': [10000, 5000, 15000]})
df['newDate'] = pd.to_datetime(df['Date'], format='%m/%d/%Y')
new_year = holidays.HolidayBase()
new_year.append({"2018-01-01": "New Year's Day",
"2019-01-01": "New Year's Day"})
df['hol_new_year'] = np.where(df['newDate'] in new_year, 1, 0)
【问题讨论】:
标签: python pandas dataframe date