python - 从 Pandas Dataframe 和 Numpy 数组中提取基于条件的子集
问题描述
我有一个 Pandas 数据框df
和一个相同大小的 numpy 数组ar
。我可以像这样提取行df
:
subdf = df[df['column'] == value]
但是如何从中提取相应的行ar
,即具有相同索引的行?
在我的情况下,df
它也是更大数据框的一个子集,这意味着它df.index
不是一组连续的整数。
解决方案
您可以使用:
df = pd.DataFrame({'value': [1,2,3,2,1]})
ar = np.array([10,20,30,20,10])
ar[df['value'] == 2]
输出:
array([20, 20])
或者,如果您有更高的尺寸:
ar = np.arange(20).reshape(4,5)
ar[:, df['value'] == 2]
输入:
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14],
[15, 16, 17, 18, 19]])
输出:
array([[ 1, 3],
[ 6, 8],
[11, 13],
[16, 18]])
推荐阅读
- flutter - 在 VS Code 中显示鼠标悬停的 Flutter 文档不起作用
- javascript - 基于值的字符串对象键
- sql - 是否可以在其他表中查询具有多个出现计数的行?
- swift - Swift 5 keyPath 用于函数参数
- vba - 插入语句:运行时错误 3061,预期参数太少 1
- javascript - 字符串数组到对象数组的转换
- html - CSS Flexbox / 在所有情况下将页脚固定在页面底部
- excel - 循环文件夹中的所有文件(VBA) - 运行时错误 52
- c# - Linq2Db 异步插入 - 无法访问已处置的对象。ObjectDisposed_ObjectName_Name'
- python - 名称“屏幕”未定义