You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用For循环过滤Pandas DataFrame仅获最后一项结果的问题求助

问题原因

你写的循环里,每次遍历bn_stocks的元素时,都会把变量a重新赋值为当前股票对应的过滤结果——前面迭代得到的其他股票数据会被直接覆盖,所以最后a里只剩最后一个元素PNB的内容。

解决方案

方法1:用Pandas内置的isin()(推荐,效率更高)

直接用isin()方法匹配列表里的所有元素,一行代码搞定,尤其适合大型数据集:

bn_stocks = ['HDFCBANK','ICICIBANK','AXISBANK','KOTAKBANK','SBIN','INDUSINDBK','BANKBARODA','AUBANK','FEDERALBANK',
             'IDFCFIRSTB','BANDHANBK','PNB']
a = final[final['SYMBOL'].isin(bn_stocks)]

方法2:修改循环代码(保留循环逻辑)

如果一定要用循环实现,需要先初始化一个空列表来收集每次的过滤结果,最后合并成完整的DataFrame:

import pandas as pd  # 若未导入pandas需先执行这行

bn_stocks = ['HDFCBANK','ICICIBANK','AXISBANK','KOTAKBANK','SBIN','INDUSINDBK','BANKBARODA','AUBANK','FEDERALBANK',
             'IDFCFIRSTB','BANDHANBK','PNB']
result_list = []
for bn_stock in bn_stocks :
    filt4 = final['SYMBOL'] == bn_stock
    result_list.append(final[filt4])
# 合并所有结果
a = pd.concat(result_list, ignore_index=True)

注:这个方法效率低于isin(),大型数据集优先选方法1。

内容的提问来源于stack exchange,提问作者smg_08

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 18:05:01