我有两个熊猫数据框: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
包含integer
个值,而df2
包含Boolean
个值。
我需要以以下方式对df1
进行子集设置:仅获取df2
中至少具有True
值的列。
预期输出:
IDs Value1 Value3 Value4
AB 1 1 5
BC 2 2 3
BG 1 4 1
RF 2 2 7
如何在没有迭代和列表的情况下使用熊猫函数来做到这一点?
预期产量: 谢谢。
答案 0 :(得分:1)
不确定此类问题是否适合stackoverflow,但这是一种方法:
d1 = df1.values # extract values as numpy array, should be int
d2 = df2.values # extract values as numpy array, should be bool
d2_any = np.any(d2,axis=0) # sets true if any of the values along the axis is true. see official man.
selected = d1[:,d2_any] # select the correct columns