簡體   English   中英

Python 中有沒有辦法在 Pandas 時間序列中標記中國假期

[英]Is there a way in Python to mark the Chinese Holidays in Pandas Time Series

我想在一個額外的列中將我的時間序列(來自中國的數據)中的日子標記為假日(布爾真)和非假日(布爾假)。

我是這個話題的新手,目前我正試圖找出解決這個問題的方法。

我在 2020 年有以下日子作為中國法定節假日:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM