在pd.Dataframe中选择反向索引

时间:2018-04-16 10:13:51

标签: python pandas dataframe indexing

如何使用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]看起来太沉闷了。还有更好的主意吗?

3 个答案:

答案 0 :(得分: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, ...]

答案 1 :(得分:2)

使用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

答案 2 :(得分:0)

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

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