我想將日期在特定假期前 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)
uj5u.com熱心網友回復:
您可以使用熊貓的時間序列偏移量:
ye = pd.tseries.offsets.YearEnd()
yb = pd.tseries.offsets.YearBegin()
d = pd.to_timedelta('1w')
s = df['newDate']
df['hol_new_year'] = (s.between(s-ye-d, s-ye d)
|s.between(s yb-d, s yb d)
).astype(int)
輸出:
Date Event Cost newDate hol_new_year
0 1/1/2019 Music 10000 2019-01-01 1
1 1/5/2019 Poetry 5000 2019-01-05 1
2 12/28/2018 Theatre 15000 2018-12-28 1
3 1/15/2021 SO 0 2021-01-15 0
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/354566.html
上一篇:如何使用日期過濾器更改GoogleSheets查詢資料透視表中的日期格式?
下一篇:將資料從日期時間列移動到日期列
