我想从 Dask 系列中随机抽取 k 值而不进行替换,并且我不想事先计算系列的长度。如果 k 大于系列的长度,那么我想返回整个系列。
我已经尝试过 dask 系列示例函数,但它无法将延迟对象作为frac
参数处理:
df = pd.DataFrame({"A": [0, 1, 2]})
ddf = dd.from_pandas(df, npartitions=1)
ds = ddf["A"]
k = 2
sampled_series = ds.sample(frac=k / ds.shape[0])
sampled_series.compute()
给出错误
TypeError: 试图将 dd.Scalar<lt-3dc6..., dtype=bool> 转换为布尔值...
我也尝试从 dask bag 采样,但是当 k 大于 bag 的长度时会引发错误:
df = pd.DataFrame({"A": [0, 1, 2]})
ddf = dd.from_pandas(df, npartitions=1)
ds = ddf["A"]
sample = random.sample(ds.to_bag(), k=4)
sample.compute()
给出错误
例外:ValueError('样本大于总体或为负')
有什么办法可以得到我想要的结果?