pandas 如何修复Python中的DateTimeIndex.union_many is deprecated警告

bwleehnv  于 2023-09-29  发布在  Python
关注(0)|答案(3)|浏览(115)

我有以下代码:

import datetime, pytz
import pandas_market_calendars as mcal

today_date = datetime.datetime.now(tz=pytz.timezone('US/Eastern'))
start_date = datetime.date(today_date.year - 5, today_date.month, today_date.day)

end_date = datetime.date(today_date.year + 2, today_date.month, today_date.day + 5)

nyse_calender = mcal.get_calendar('NYSE')
nyse_business_days = nyse_calender.schedule(start_date=start_date, end_date=end_date)

当我运行这个命令时,我得到以下警告:

FutureWarning: DatetimeIndex.union_many is deprecated and will be removed in a future version. Use obj.union instead.   
  nyse_business_days = nyse_calender.schedule(start_date=start_date, end_date=end_date)

我该怎么解决这个问题?警告并不能真正帮助采取行动。

368yc8dk

368yc8dk1#

几天前合并了pandas_market_calendarPR,解决了此问题。

5us2dqdw

5us2dqdw2#

我遇到了同样的问题,只是看到这个当我即将提高我的。在这里我提供了更多关于我的调试的细节:

pandas version 1.4.0

pandas_market_calendars version 3.3(it also happens on version3.2)

警告来自行:

nyse_business_days = nyse_calender.schedule(start_date=start_date, end_date=end_date)

我对pandas_market_calendars做了进一步的调试,它实际上来自market_calendar.py第514行,看起来像:

for market_time in market_times:
            temp = self.days_at_time(_all_days, market_time) # standard times
            if _adj_col:
                # mark here, according with Yunfei's debugging, it orients from here
                # create an array of special times
                special = self.special_dates(market_time, start_date, end_date, filter_holidays= False)

从我的Angular 来看,函数的输入如下:

market_time
'market_open'
start_date
Timestamp('2021-07-05 00:00:00')
end_date
Timestamp('2021-07-25 00:00:00')

由于514行实际上是从loop运行的,我的控制台显示了数千个这样的“futurewarning”,在呼救

vwkv1x7d

vwkv1x7d3#

自2023年4月3日pandas 2.0发布以来,DatetimeIndex.union_many函数已被弃用(有关更多详细信息,请查看PR)。现在您可以使用具有类似功能的DatetimeIndex.union

示例

定义两个pandas.core.indexes.datetimes.DatetimeIndex对象并执行联合操作,如下所示:

import pandas as pd
date_range_1 = pd.date_range(start='2023-09-01', end='2023-09-06', freq='D')
date_range_2 = pd.date_range(start='2023-09-04', end='2023-09-14', freq='D')
result = date_range_1.union(date_range_2)
result

回报率:

DatetimeIndex(['2023-09-01', '2023-09-02', '2023-09-03', '2023-09-04',
               '2023-09-05', '2023-09-06', '2023-09-07', '2023-09-08',
               '2023-09-09', '2023-09-10', '2023-09-11', '2023-09-12',
               '2023-09-13', '2023-09-14'],
               dtype='datetime64[ns]', freq='D')

备注:

DatetimeIndex.union方法一次只能联合一个DatetimeIndex。已弃用的union_many函数旨在支持DatetimeIndex对象列表的联合。

相关问题