【问题标题】:vaex filter an dataframe using mask from anther seriesvaex 使用来自另一个系列的掩码过滤数据帧
【发布时间】:2020-11-06 01:42:10
【问题描述】:

我想使用 x 系列的掩码来过滤掉 vaex 数据帧 y。 我知道如何在 pandas 和 numpy 中做到这一点。在 pandas 中是这样的:

import pandas as pd

a = [0,0,0,1,1,1,0,0,0]
b = [4,5,7,8,9,9,0,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, 0, 1, 1, 1, 0, 0, 0])
b = np.array([4, 5, 7, 8, 9, 9, 0, 6, 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。

有没有什么方法可以达到 pandas 所要求的等效结果?

谢谢

【问题讨论】:

    标签: python dataframe vaex


    【解决方案1】:

    虽然 Vaex 具有与 Pandas 相似的 API(类似命名的方法,做同样的事情),但两个库的实现完全不同,因此不容易“混合和匹配”。

    为了处理任何类型的数据,该数据需要是同一个 Vaex 数据帧的一部分。

    所以为了实现你想要的,这样的事情是可能的:

    import vaex
    import numpy as np
    
    a = np.array([0, 0, 0, 1, 1, 1, 0, 0, 0])
    b = np.array([4, 5, 7, 8, 9, 9, 0, 6, 4])
    
    y = vaex.from_arrays(x1=b)
    y.add_column(name='x2', f_or_array=a)
    
    print(y[y.x2 == 1])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-10-01
      • 2015-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多