我有一个数据帧,其中某个列被送入过滤函数,该函数返回一系列布尔值(不是布尔语句)。
EG:我的过滤器返回
0 True,
1 False,
2 True
如何才能获得我的过滤器系列为真的数据帧行? 在上面的示例中,我将删除一个删除了行索引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