我有一个像这样的熊猫数据框。
df = pd.DataFrame({'A' : [5,6,3,4,4,5,6,7,12,13], 'B' :
[1,2,3,5,5,6,7,8,9,10,]})
df
A B
0 5 1
1 6 2
2 3 3
3 4 5
4 4 5
5 5 6
6 6 7
7 7 8
8 12 9
9 13 10
Run Code Online (Sandbox Code Playgroud)
我有一系列的索引
array = np.array([0,1,2,4,7,8])
Run Code Online (Sandbox Code Playgroud)
现在,我可以像这样用数组索引对数据框进行子集化
df.iloc[array]
Run Code Online (Sandbox Code Playgroud)
这给了我一个数组中存在索引的数据框。
A B
0 5 1
1 6 2
2 3 3
4 4 5
7 7 8
8 12 9
Run Code Online (Sandbox Code Playgroud)
现在我想要所有不在数组索引中的行,我想要的行索引是[3,5,6,9]
我正在尝试做这样的事情,但这给我一个错误。
df.iloc[~loc]
您可以使用isin与反向的布尔Series通过~:
import pandas as pd
import numpy as np
df = pd.DataFrame({'A' : [5,6,3,4,4,5,6,7,12,13], 'B' :
[1,2,3,5,5,6,7,8,9,10,]})
print df
A B
0 5 1
1 6 2
2 3 3
3 4 5
4 4 5
5 5 6
6 6 7
7 7 8
8 12 9
9 13 10
array = np.array([0,1,2,4,7,8])
print array
[0 1 2 4 7 8]
print df.index.isin(array)
[ True True True False True False False True True False]
print ~df.index.isin(array)
[False False False True False True True False False True]
print df[ ~df.index.isin(array)]
A B
3 4 5
5 5 6
6 6 7
9 13 10
Run Code Online (Sandbox Code Playgroud)