代码之家  ›  专栏  ›  技术社区  ›  CMCDragonkai

Dask数据帧大于延迟数

  •  0
  • CMCDragonkai  · 技术社区  · 5 年前

    有没有办法做到这一点,但阈值是一个延迟的数字?

    import dask
    import pandas as pd
    import dask.dataframe as dd
    
    threshold = 3
    
    df = pd.DataFrame({'something': [1,2,3,4]})
    ddf = dd.from_pandas(df, npartitions=2)
    
    ddf[ddf['something'] >= threshold]
    

    如果…怎么办 threshold 是:

    threshold = dask.delayed(3)
    

    它给了我:

    TypeError('Truth of Delayed objects is not supported')
    

    我想保持沉默 ddf 作为dask数据帧,而不是将其转换为熊猫数据帧。想知道是否有组合形式也具有延迟值。

    0 回复  |  直到 5 年前
        1
  •  2
  •   TomAugspurger    5 年前

    Dask无法知道延迟对象中的具体值是整数,因此无法知道在操作中如何处理它(对齐、广播等)

    如果使用大小为0的数组之类的东西,事情似乎没问题

    In [32]: df = dd.from_pandas(pd.DataFrame({"A": [1, 2, 3, 4]}), 2)
    
    In [33]: threshold = da.from_array(np.array([3]))[0]
    
    In [34]: df.A > threshold
    Out[34]:
    Dask Series Structure:
    npartitions=2
    0    bool
    2     ...
    3     ...
    Name: A, dtype: bool
    Dask Name: gt, 8 tasks
    
    In [35]: df[df.A > threshold].compute()
    Out[35]:
       A
    3  4