问题描述
我想使用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])