python - 由另一个数据帧子集一个数据帧
问题描述
我有两个熊猫数据框: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 函数,我怎么能做到这一点?
预期输出:谢谢。
解决方案
不确定这种问题是否适合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
推荐阅读
- python - 通过添加数组的元素得到一个数字
- javascript - 向现有 JSON 对象添加新元素
- node.js - /usr/bin/env: 'node': 运行 vscode 任务时没有这样的文件或目录
- github - 本地构建 VuePress 站点并将其推送到 Github Pages
- ios - Google Maps iOS 使用平移或触摸手势绘制圆圈并在绘制的圆圈内显示标记
- angular - 错误 RangeError:超出最大调用堆栈大小(Angular 6)
- python - 线性回归后从突发数据中减去线性斜率
- iframe - 使用本地文件将 iframe 内容添加到父文档
- java - 错误:缺少 JavaFX 运行时组件,需要在 Eclipse 中运行此应用程序
- migration - 语言版本迁移中函数不匹配参数,以及如何知道函数的签名