1
我有一个数据帧,其中某个列被馈送到返回一系列布尔值(不是布尔语句)的过滤函数。带有列表或一系列布尔值(不是语句)的索引数据框
EG:我的过滤器返回
0 True,
1 False,
2 True
我怎么能得到的只有数据帧行中,我的过滤器系列是真的吗? 在上面的例子中,我将删除行索引为1的数据帧。
我有一个数据帧,其中某个列被馈送到返回一系列布尔值(不是布尔语句)的过滤函数。带有列表或一系列布尔值(不是语句)的索引数据框
EG:我的过滤器返回
0 True,
1 False,
2 True
我怎么能得到的只有数据帧行中,我的过滤器系列是真的吗? 在上面的例子中,我将删除行索引为1的数据帧。
您需要boolean indexing
如果两个indexes
是相同的:
df = df[boolean_ser]
如果不是和lenght是一样的:
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
列表完美地工作过(如果长度相同):
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