vaex使用花药系列中的遮罩过滤数据框

问题描述

我想使用x系列的遮罩过滤掉vaex数据框y。 我知道如何在pandas和numpy中执行此操作。在大熊猫中就像:

import pandas as pd

a = [0,1,0]
b = [4,5,7,8,9,6,4]

x = pd.Series(a)
y = pd.Series(b)

print(y[x==1])

结果类似于:

3    8
4    9
5    9
dtype: int64

但是在vaex中,以下代码不起作用。

import vaex
import numpy as np

a = np.array([0,0])
b = np.array([4,4])

x = vaex.from_arrays(x=a)
y = vaex.from_arrays(x=b)

print(y[x.x == 1].values)

结果为空:

[]

似乎vaex与pandas和numpy没有相同的索引概念。尽管两个数据框的形状相同,但是数组y不能使用掩码x.x == 1。

有没有办法像熊猫那样获得同等的结果?

谢谢

解决方法

虽然Vaex具有与Pandas类似的API(名称相似的方法,它们执行相同的操作),但是两个库的实现完全不同,因此“混合和匹配”并不容易。

为了处理任何类型的数据,该数据必须属于同一Vaex数据框。

因此,为了实现您想要的目标,可能会发生以下情况:

import vaex
import numpy as np

a = np.array([0,1,0])
b = np.array([4,5,7,8,9,6,4])

y = vaex.from_arrays(x1=b)
y.add_column(name='x2',f_or_array=a)

print(y[y.x2 == 1])

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...