首页 > 解决方案 > 由另一个数据帧子集一个数据帧

问题描述

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

如果没有迭代和列表,但使用 pandas 函数,我怎么能做到这一点?

预期输出:谢谢。

标签: pythonpandasdataframe

解决方案


不确定这种问题是否适合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

推荐阅读