Python 将Spark数据帧拆分为训练和测试

Python 将Spark数据帧拆分为训练和测试,python,pandas,pyspark,Python,Pandas,Pyspark,我想将我的Spark数据帧拆分为训练,并在以下条件下进行测试- 我希望能够复制分割,这意味着每个 时间相同的数据帧,我将能够到相同的分割 拆分应从列名sequence-id的每个唯一值中提取 目前,我通过将Dataframe转换为Pandas Dataframe并执行以下操作来实现- test_padnas = df.toPandas() train_frac = 0.8 train = test_padnas.sort_values(by='sequence_id','timestamp']

我想将我的Spark数据帧拆分为训练,并在以下条件下进行测试-

  • 我希望能够复制分割,这意味着每个 时间相同的数据帧,我将能够到相同的分割
  • 拆分应从列名sequence-id的每个唯一值中提取
  • 目前,我通过将Dataframe转换为Pandas Dataframe并执行以下操作来实现-

    test_padnas = df.toPandas()
    train_frac = 0.8
    
    train = test_padnas.sort_values(by='sequence_id','timestamp']).groupby('sequence_id',group_keys=False).apply(lambda df: df.sample(frac=train_frac,random_state=200))
    test=test_padnas.drop(train.index)
    

    如果df是Spark数据帧,则可以使用
    randomspilt()
    函数根据权重百分比分割数据帧

    此外,它接受一个种子,您可以使用该种子初始化随机分割数据的伪随机数生成器,因此每次都具有相同的分割

    train, test = df.randomSplit(weights=[0.8,0.2], seed=200)
    

    如果df是Spark数据帧,则可以使用
    randomspilt()
    函数根据权重百分比分割数据帧

    此外,它接受一个种子,您可以使用该种子初始化随机分割数据的伪随机数生成器,因此每次都具有相同的分割

    train, test = df.randomSplit(weights=[0.8,0.2], seed=200)