2024-06-02 05:27:32 发布
网友
我有一个给定的日期,可能是一个交易日,也可能不是一个交易日,我有一个pandas数据框,按交易日索引,每个交易日都有回报。在
这是我的约会对象
dt_query = datetime.datetime(2006, 12, 31, 16)
我想做这样的事情(返回是一个pandas数据帧)
然而,这可能行不通,因为前一天可能是交易日,也可能不是交易日。我可以做一个try块,循环并尝试直到我们找到一些东西,但我想知道是否有一种更优雅的方式,只使用熊猫。在
这可能不是最优雅的解决方案,但它是有效的。在
这里的想法是:从任何日期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()定义用于检查要选择哪些行的公差:
np.timedelta64()
以及:
将返回所需范围内的行。。。在
这可能不是最优雅的解决方案,但它是有效的。在
这里的想法是:从任何日期dt_查询,在若干日历天(比如10),必须有交易日,你的下一个交易日只是其中的第一个。因此,您可以在dt_query和dt_query+timedelta(days=10)的返回中找到所有的days,然后得到第一个。在
用你的例子,它应该看起来像
谢谢你!这已经困扰我好几个小时了。在
我稍微改了一下:
您可以检查整列的时间增量:
然后使用
^{pr2}$np.timedelta64()
定义用于检查要选择哪些行的公差:以及:
^{3}$将返回所需范围内的行。。。在
相关问题 更多 >
编程相关推荐