从Len 18000的Dask数据帧中采样n = 2000生成错误当' replace = False'

时间:2016-08-26 23:33:53

标签: python dask

我有一个从csv文件创建的dask数据框,而len(daskdf)返回18000但是当我ddSample = daskdf.sample(2000)时出现错误

ValueError: Cannot take a larger sample than population when 'replace=False'

如果数据框大于样本数量,我可以在没有替换的情况下进行采样吗?

1 个答案:

答案 0 :(得分:2)

示例方法仅支持frac=关键字参数。请参阅API documentation

您获得的错误来自Pandas,而不是Dask。

In [1]: import pandas as pd
In [2]: df = pd.DataFrame({'x': [1]})
In [3]: df.sample(frac=2000, replace=False)
ValueError: Cannot take a larger sample than population when 'replace=False'

解决方案

正如Pandas错误所示,请考虑使用替换

进行采样
In [4]: df.sample(frac=2, replace=True)
Out[4]: 
   x
0  1
0  1

In [5]: import dask.dataframe as dd
In [6]: ddf = dd.from_pandas(df, npartitions=1)
In [7]: ddf.sample(frac=2, replace=True).compute()
Out[7]: 
   x
0  1
0  1