如何从pandas DataFrame中选取指定日期数据并过滤无目标日期的表
正确实现方案
你原来的np.where用法不符合需求,这个函数用于批量替换数组元素,不能用来筛选DataFrame行。可以按照如下逻辑修改代码:
import pandas as pd acciones = ['FCEL', 'CAT'] # 定义目标日期 TARGET_DATE = "2021-09-03" for accion_code in acciones: accion = Ticker(accion_code, "2021-1-1", "2021-9-20", [5, 10, 20]) # 获取信号DataFrame,若buyingSignals()默认直接打印不返回值,可查看Ticker类是否有存储信号的实例属性,比如signal_df这类,替换下方的返回值即可 signal_df = accion.buyingSignals() # 先判断目标日期是否在Date索引中,存在才输出 if TARGET_DATE in signal_df.index: # 筛选指定行和指定列输出 print(f"********** {accion_code} **********") print(signal_df.loc[[TARGET_DATE], ['Adj Close', 'Signal']])
补充说明
如果你的buyingSignals()方法本身只有打印逻辑,不会返回DataFrame,你需要修改Ticker类的对应方法,把生成的信号表作为返回值返回,或者将信号表存储为实例的公共属性(比如accion.signal_df)再读取即可。代码中提前做了日期存在性判断,自然就不会输出没有目标日期的标的信号表,完全符合你的要求。
内容的提问来源于stack exchange,提问作者Marco Andres Alarcon Sierra
相关产品推荐
相关产品推荐

