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

选择索引标签位于两个列表之一的数据帧行

  •  1
  • Windstorm1981  · 技术社区  · 7 年前

         one   two three
    
    A    ...   ...   ... 
    B    ...   ...   ... 
    C    ...   ...   ... 
    D    ...   ...   ... 
    E    ...   ...   ... 
    F    ...   ...   ... 
    

    我想根据行索引标签是在一个列表中还是在另一个列表中来子集dataframe。这些列表是独占的,不包含相同的元素。

    我可以用一张单子来做,但似乎不能用两张。

    所以如果我有 list_A = ['A, B, F'] list_B = ['D']

    所以 df[df.index.isin(list_A)]

         one   two three
    
    A    ...   ...   ... 
    B    ...   ...   ... 
    F    ...   ...   ... 
    

    我想要的是 df[df.index.isin(['A','B','D','F'])] 不合并列表:

         one   two three
    
    A    ...   ...   ... 
    B    ...   ...   ... 
    D    ...   ...   ... 
    F    ...   ...   ... 
    

    但当我尝试 df[df.index.isin(list_A or List_B)] df[df.index.isin(list_A) or df.index.isin(list_B)] 它不起作用。

    1 回复  |  直到 7 年前
        1
  •  3
  •   jpp    7 年前

    你有几个选择。

    使用 | (按位“或”)与两个系列

    df.index.isin(lst) or 操作通过 :

    df_filtered = df[df.index.isin(list_A) | df.index.isin(list_B)]
    

    使用前合并列表 pd.Index.isin

    df_filtered = df[df.index.isin(list_A + list_B)]