我有一个数据框,如下面的照片。我想创建一个培训和测试集。数据集由CustomerID和InvoiceNo排序。对于每个客户,我想将除该客户的最后两行以外的每一行作为训练集,而将每个客户的第二行到最后一行变成一个训练集。
理想情况下,结果将是1个巨型训练集和1个测试集。使用PySpark有有效的方法吗?非常感谢您的提前帮助
最佳答案
您总是可以添加索引并根据该索引进行过滤-不确定是否有比这更有效的方法。
from pyspark.sql.window import Window
from pyspark.sql import functions as func
window = Window.partitionBy(func.col("CustomerID"))\
.orderBy(func.col("InvoiceNo").desc())
df = df.select('*', func.rank().over(window).alias('rank'))
train = df.filter("rank > 2")
test = df.filter("rank <= 2")
关于python - Pyspark-从数据框创建训练集和测试集,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45724230/