索引DataFrame与列表或一系列布尔值(不是语句)

时间:2017-03-31 18:01:24

标签: python pandas

我有一个数据帧,其中某个列被送入过滤函数,该函数返回一系列布尔值(不是布尔语句)。

EG:我的过滤器返回

0   True,
1   False,
2   True

如何才能获得我的过滤器系列为真的数据帧行? 在上面的示例中,我将删除一个删除了行索引1的数据框。

1 个答案:

答案 0 :(得分:1)

如果两个indexes相同,则需要boolean indexing

df = df[boolean_ser]

如果没有,长度相同:

df = df[boolean_ser.values]

样品:

np.random.seed(100)
df = pd.DataFrame(np.random.randint(10, size=(3, 4)), columns=list('ABCD'))
boolean_ser = pd.Series([True, False, True], index=df.index)
print (df)
   A  B  C  D
0  8  8  3  7
1  7  0  4  2
2  5  2  2  2
boolean_ser = pd.Series([True, False, True], index=df.index)
print (boolean_ser)
0     True
1    False
2     True
dtype: bool

df1 = df[boolean_ser]
print (df1)
   A  B  C  D
0  8  8  3  7
2  5  2  2  2
boolean_ser = pd.Series([True, False, True], index=[8,9,10])
print (boolean_ser)
8      True
9     False
10     True
dtype: bool

df1 = df[boolean_ser.values]
print (df1)
   A  B  C  D
0  8  8  3  7
2  5  2  2  2

List也完美(如果长度相同):

print (boolean_list)
[True, False, True]

df1 = df[boolean_list]
print (df1)
   A  B  C  D
0  8  8  3  7
2  5  2  2  2
相关问题