Python有没有办法在Pandas时间序列中标记中国的节日

2024-04-20 13:05:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在我的timeseries(来自中国的数据)中的一个额外的列中将日期标记为假日(布尔真)和非假日(布尔假)

我对这个话题还不熟悉,目前我正试图找出解决这个问题的方法

2020年我有以下几天作为中国法定假日:

Chinese Holidays 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 = cal.holidays(start=X['timestamp'].min(), end = X['timestamp'].max())

X.assign(Holidays=X['timestamp'].isin(cal.holidays()).astype(int))

我的问题是:

1)一般来说,这是一种合适的方法吗

2)我如何在线路假日(“中国新年”,月=1,日=25)中定义从1月24日开始到1月30日结束的日子?有没有办法定义休息日而不是只定义一天

谢谢你的帮助

最好的

B


Tags: 数据方法标记定义holidays中将timestampcal
2条回答

在我看来,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)

中国人使用农历。 因此,您可以在python中使用这样的库:

pip instal LunarCalendar

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

相关问题 更多 >