用另一个数据框子集一个数据框

时间:2018-09-17 14:46:14

标签: python pandas dataframe

我有两个熊猫数据框: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

如何在没有迭代和列表的情况下使用熊猫函数来做到这一点?

预期产量: 谢谢。

1 个答案:

答案 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