如何根据列表中的索引NOT选择数据帧

时间:2014-10-24 21:45:25

标签: python pandas

如果我在名为的变量中有一个数字列表:

Int64Index([0, 7, 8, 9])

和数据帧df。如果我想使用上面的数字选择行号。换句话说,我想选择第0,7,8和9行。我会做以下事情:

df.iloc[row]

如果我想选择那些不在变量中的内容怎么办?如果我有50行数据帧,并且我想跳过0,7,8和9,是否有任何快捷方式可以执行此操作?我

1 个答案:

答案 0 :(得分:2)

只需使用isin~否定运算符:

In [6]:

df = pd.DataFrame({'a':randn(10), 'b':randn(10)})
df
Out[6]:
          a         b
0 -0.498370  0.350204
1 -0.484727 -0.977876
2 -0.319675 -0.781217
3  0.618511  0.416958
4 -0.834304  1.606860
5  0.768302 -0.394504
6 -0.033161 -1.539782
7 -0.062261  1.411695
8 -0.227656 -0.527440
9  0.843263  0.927568
In [7]:

index = [0, 7, 8, 9]
df[~df.index.isin(index)]
Out[7]:
          a         b
1 -0.484727 -0.977876
2 -0.319675 -0.781217
3  0.618511  0.416958
4 -0.834304  1.606860
5  0.768302 -0.394504
6 -0.033161 -1.539782