2017-04-18 81 views
2

我有一個熊貓數據幀:得到大熊貓數據幀的規定指標,其中列有狀態

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

您可以使用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

替代解決方案:

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