我有一个数据帧,我想随机化数据帧中的行。我尝试通过给出 1 的一小部分来对数据进行采样,但这不起作用(有趣的是,这在 Pandas 中有效)。
最佳答案
它在 Pandas 中有效,因为在本地系统中采样通常是通过混洗数据来解决的。另一方面,Spark 通过对数据执行线性扫描来避免改组。这意味着 Spark 中的抽样只会随机化样本的成员,而不是顺序。
您可以订购 DataFrame
通过一列随机数:
from pyspark.sql.functions import rand
df = sc.parallelize(range(20)).map(lambda x: (x, )).toDF(["x"])
df.orderBy(rand()).show(3)
## +---+
## | x|
## +---+
## | 2|
## | 7|
## | 14|
## +---+
## only showing top 3 rows
但它是:
DataFrame
中的值的顺序在非平凡的情况下不是你可以真正依赖的东西,因为 DataFrame
不支持索引,不收集就相对没用。 关于python-3.x - PySpark:随机化数据框中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36803030/