获取pandas dataframe的指定索引,其中列具有条件

时间:2017-04-18 12:54:32

标签: python pandas

我有一个pandas数据帧:

id    value
14     122
15     120
16     190
17     490
18     328
19     309
20     323

我有一个id L = [14,17,20]的列表,并希望做两件事:

  

获取那些行的索引列表,其中id不在列表L中

     

即(行15,16,18,19的索引)

  

删除ID的行不在列表L中。

我的预期输出:

id    value
14     122
17     490
20     323

2 个答案:

答案 0 :(得分:3)

您可以将boolean indexingisin一起用于反转布尔值掩码~

idx = df.index[~df['id'].isin(L)].tolist()
print (idx)
[1, 2, 4, 5]

然后drop

df1 = df.drop(idx)
print (df1)
   id  value
0  14    122
3  17    490
6  20    323

替代:

df1 = df[df['id'].isin(L)]
print (df1)
   id  value
0  14    122
3  17    490
6  20    323

答案 1 :(得分:2)

替代解决方案:

In [106]: df.query("id in @L")
Out[106]:
   id  value
0  14    122
3  17    490
6  20    323