[英]Is there a way in Python to mark the Chinese Holidays in Pandas Time Series
我想在一個額外的列中將我的時間序列(來自中國的數據)中的日子標記為假日(布爾真)和非假日(布爾假)。
我是這個話題的新手,目前我正試圖找出解決這個問題的方法。
我在 2020 年有以下日子作為中國法定節假日:
據我所知,中國沒有開箱即用的日歷,所以我必須創建一個自定義日歷,如下所示:
from pandas.tseries.holiday import Holiday,AbstractHolidayCalendar
class ChineseHolidays(AbstractHolidayCalendar):
rules = [Holiday('Chinese New Year', month=1, day=25),
'Question: How to add more than one day?',
etc,
...]
cal = ChineseHolidays()
接下來的步驟是創建 Holidays 列,如下所示:
holidays = cal.holidays(start=X['timestamp'].min(), end = X['timestamp'].max())
X.assign(Holidays=X['timestamp'].isin(cal.holidays()).astype(int))
我的問題是:
1)這通常是一個合適的方法嗎?
2) 如何在 Holiday('Chinese New Year', month=1, day=25) 行中定義從 1 月 24 日開始到 1 月 30 日結束的日子? 有沒有辦法定義休息日而不是只定義一天?
謝謝你的幫助。
最好的,
B.
中國人使用農歷。 所以你可以在 python 中使用這樣的庫:
pip 安裝農歷日歷
import datetime
from lunarcalendar import Converter, Solar, Lunar, DateNotExist
l = Lunar(year=2020, month=1, day=1, isleap=False)
print(Converter.Lunar2Solar(l))
返回規范 2020-01-25
在我看來,Pandas 有許多支持周期和重復日期的不同日期方法。
https://pandas.pydata.org/pandas-docs/stable/user_guide/timeseries.html
他們還提到在假期使用它,所以我懷疑這可能是您正在尋找的。
例子
In [86]: pd.date_range('2018-01-01', '2018-01-05', periods=5)
Out[86]:
DatetimeIndex(['2018-01-01', '2018-01-02', '2018-01-03', '2018-01-04',
'2018-01-05'],
dtype='datetime64[ns]', freq=None)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.