代码之家  ›  专栏  ›  技术社区  ›  smg_08

使用for循环在pandas数据帧中进行筛选[重复]

  •  0
  • smg_08  · 技术社区  · 1 年前

    我有一个大型数据集“final”,并且我有一项要在名为“bn_stocks”的列表中进行筛选。过滤必须应用于“最终”(数据集)的“SYMBOL”列。我尝试使用for循环,但只过滤了列表的最后一项。

    bn_stocks = ['HDFCBANK','ICICIBANK','AXISBANK','KOTAKBANK','SBIN','INDUSINDBK','BANKBARODA','AUBANK','FEDERALBANK',
                 'IDFCFIRSTB','BANDHANBK','PNB']
    for bn_stock in bn_stocks :
        filt4 = final['SYMBOL'] == bn_stock
        a = final[filt4]
    

    当我运行上面的代码时,我只得到过滤后的最后一个元素“PNB”,而我要求它过滤列表“bn_stocks”中的所有元素。

    1 回复  |  直到 1 年前
        1
  •  2
  •   azro    1 年前

    使用的目的 pandas ,是使用它的力量,在99%的用例中,你不使用 for-loop 用数据帧做某事

    import pandas as pd
    
    bn_stocks = ['HDFCBANK', 'ICICIBANK', 'AXISBANK', 'KOTAKBANK', 'SBIN',
                 'INDUSINDBK', 'BANKBARODA', 'AUBANK', 'FEDERALBANK',
                 'IDFCFIRSTB', 'BANDHANBK', 'PNB']
    
    final = pd.DataFrame({
        "value": [1, 2, 3, 4, 5],
        "SYMBOL": ["AXISBANK", "A", "B", "AUBANK", "PNB"]
    })
    
    filtered = final[final["SYMBOL"].isin(bn_stocks)]
    print(filtered)