Python 如何基于另一个布尔数组';s列值?

Python 如何基于另一个布尔数组';s列值?,python,python-3.x,pandas,Python,Python 3.x,Pandas,我试图根据第二个布尔数组(具有相同长度)的列的值,删除Pandas Dataframe的列 例如,假设熊猫数据帧 [value1, value2, value3] 和布尔数组 [True, False, True]. 数据帧上的删除操作的结果将是 [value1, value3] 请注意,我们删除了布尔数组中值为False的第二列 我想像这样的事情会很好: for i in range(len(boolean_array)): if boolean_array[i] == Fal

我试图根据第二个布尔数组(具有相同长度)的列的值,删除Pandas Dataframe的列

例如,假设熊猫数据帧

[value1, value2, value3]
和布尔数组

[True, False, True].
数据帧上的删除操作的结果将是

[value1, value3] 
请注意,我们删除了布尔数组中值为False的第二列

我想像这样的事情会很好:

for i in range(len(boolean_array)):
    if boolean_array[i] == False:
        df = df.drop(df.columns[i], axis=1)
但是我很确定有一种更简单的方法。

通过布尔掩码使用for filter columns by boolean mask:

df = pd.DataFrame({'value1':[1,2],
                   'value2':[10,20],
                   'value3':[100,200]})

arr = np.array([True, False, True])

df1 = df.loc[:, arr]
print (df1)
   value1  value3
0       1     100
1       2     200