3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
你好!欢迎来到量化交易的世界。你问的这个问题非常经典,它涉及到 Python 数据分析核心库 Pandas 中的一个重要概念:布尔索引(Boolean Indexing)。
简单来说,suspened_info_df[unsuspened_index] 的意思就是:根据条件过滤数据。
下面我们逐行拆解这段代码,帮你彻底弄懂它:
suspened_info_df = get_price(list(stock_list), start_date=context.current_dt, end_date=context.current_dt, frequency='daily', fields='paused')['paused'].T
这一行通过 JoinQuant 的 get_price API 获取了股票池中所有股票当天的停牌状态。返回的 suspened_info_df 是一个 Pandas DataFrame(可以理解为一个表格)。
unsuspened_index = suspened_info_df.iloc[:,0] < 1
这一行是关键。它提取了表格的第一列数据,并判断其是否小于 1(即等于 0,未停牌)。
返回的 unsuspened_index 并不是一个普通的列表,而是一个由 True 和 False 组成的 Pandas Series(布尔数组)。
True。False。unsuspened_stocks = suspened_info_df[unsuspened_index].index
这就是你提问的那一行。
suspened_info_df[unsuspened_index]:当把一个由 True/False 组成的数组(unsuspened_index)放入 DataFrame 的中括号 [] 时,Pandas 会自动执行过滤操作。它只会保留那些对应位置为 True 的行,剔除为 False 的行。也就是说,这一步把停牌的股票从表格里删掉了。.index:过滤完之后,我们只需要剩下的股票代码。在 Pandas 中,行标签(这里就是股票代码)被称为 index。加上 .index 就可以把这些未停牌的股票代码提取出来,形成一个列表供后续策略使用。假设 suspened_info_df 是一个花名册:
那么 unsuspened_index 就是:
执行 suspened_info_df[unsuspened_index] 后,花名册就只剩下:
最后加上 .index,你就得到了:['平安银行', '格力电器']。
希望这个解释能帮你理清思路!在编写量化策略时,熟练掌握 Pandas 的数据筛选技巧是非常重要的。