【问题标题】:Select the inverse index in pd.Dataframe选择 pd.Dataframe 中的逆索引
【发布时间】:2026-01-20 17:15:01
【问题描述】:

如何使用lociloc在pd.DataFrame中选择反向索引?

我尝试了df.loc[!my_index,my_feature],但失败了。

df.loc[[ind for ind in df.index.tolist() if ind not in my_index],my_feature] 看起来太沉闷了。有更好的主意吗?

【问题讨论】:

    标签: python pandas dataframe indexing


    【解决方案1】:

    假设 my_index 是您要忽略的行索引,您可以将它们放在数据框 df 中存在的位置:

    df = df.drop(my_index, errors='ignore')

    【讨论】:

      【解决方案2】:

      您可以利用index.difference

      idx2 = df.index.difference(my_index)
      

      或者,set.difference

      idx2 = set(df.index).difference(my_index) # note, order not guaranteed
      

      df.loc[idx2, ...]
      

      【讨论】:

        【解决方案3】:

        使用difference:

        df.loc[df.index.difference(my_index),my_feature]
        

        或者numpy.setdiff1d:

        df.loc[np.setdiff1d(df.index, my_index),my_feature]
        

        示例

        my_index = [5,7]
        df = pd.DataFrame({'A': ['a','a','a','b'], 'B': list(range(4)) }, index=[5,7,8,9])
        print (df)
           A  B
        5  a  0
        7  a  1
        8  a  2
        9  b  3
        
        print(df.loc[df.index.difference(my_index),'A'])
        8    a
        9    b
        Name: A, dtype: object
        

        【讨论】: