Pandas数据帧在datafram中获得下一个交易日

2024-06-02 05:27:32 发布

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

我有一个给定的日期,可能是一个交易日,也可能不是一个交易日,我有一个pandas数据框,按交易日索引,每个交易日都有回报。在

这是我的约会对象

dt_query = datetime.datetime(2006, 12, 31, 16)

我想做这样的事情(返回是一个pandas数据帧)

^{pr2}$

然而,这可能行不通,因为前一天可能是交易日,也可能不是交易日。我可以做一个try块,循环并尝试直到我们找到一些东西,但我想知道是否有一种更优雅的方式,只使用熊猫。在


Tags: 数据对象pandasdatetime方式dtquery事情
3条回答

这可能不是最优雅的解决方案,但它是有效的。在

这里的想法是:从任何日期dt_查询,在若干日历天(比如10),必须有交易日,你的下一个交易日只是其中的第一个。因此,您可以在dt_query和dt_query+timedelta(days=10)的返回中找到所有的days,然后得到第一个。在

用你的例子,它应该看起来像

next_trading_date = returns.index[(returns.index > dt_query) & (returns.index <= dt_query + timedelta(days = 10))][0]

谢谢你!这已经困扰我好几个小时了。在

我稍微改了一下:

try:
    date_check = dja[start_day]
except KeyError:                        
    print("Start date not a trading day, fetching next trading day...")
    test = dja.index.searchsorted(start_day)
    next_date = dja.index[(dja.index > start_day)]
    start_date = next_date[0]
print("New date:", start_date)

您可以检查整列的时间增量:

delta = returns.column - dt_query

然后使用np.timedelta64()定义用于检查要选择哪些行的公差:

^{pr2}$

以及:

^{3}$

将返回所需范围内的行。。。在

相关问题 更多 >