以下数据框df1
包含数值
IDs Value1 Value2 Value Value4
AB 1 1 1 5
BC 2 2 2 3
BG 1 1 4 1
RF 2 2 2 7
,此数据帧df2
包含布尔值:
Index 0 1 2 3
1 True False True True
2 False False True False
3 False False True False
4 False False False False
具有相同数量的列和行。
我需要以以下方式对df1
进行子集设置:仅获取df2
中至少具有True
值的列。
含义如下:
IDs Value1 Value3 Value4
AB 1 1 5
BC 2 2 3
BG 1 4 1
RF 2 2 7
我尝试了以下代码:
df2_true = np.any(df2,axis=1)
但是,上面的行返回一个列表,该列表不能在这里使用:
result = df1[:,df2_true]
欢迎任何帮助
答案 0 :(得分:3)
答案 1 :(得分:3)
我认为它将起作用
// the next 3 cards in the deck
for i in 0...2 {
if i > (cards.count - 1) { break }
let card = cards[i]
...
}
答案 2 :(得分:1)
您已经朝着正确的方向前进,但是,由于您对屏蔽列感兴趣,因此您只需要在另一轴上应用np.any()操作,然后将布尔掩码应用于原始数据帧的columns属性: / p>
masked_df = df1.columns[df2.any(axis=0)]