【问题标题】:Select the inverse index in pd.Dataframe选择 pd.Dataframe 中的逆索引
【发布时间】:2026-01-20 17:15:01
【问题描述】:
如何使用loc或iloc在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