gpt4 book ai didi

apache-spark - 通过保留顺序,根据 id 列将 Spark DataFrame 拆分为两个 DataFrame(70% 和 30%)

转载 作者:行者123 更新时间:2023-12-05 03:04:28 32 4
gpt4 key购买 nike

我有一个类似 spark 的数据框

id  start_time   feature
1 01-01-2018 3.567
1 01-02-2018 4.454
1 01-03-2018 6.455
2 01-02-2018 343.4
2 01-08-2018 45.4
3 02-04-2018 43.56
3 02-07-2018 34.56
3 03-07-2018 23.6

我希望能够根据 id 列将其拆分为两个数据帧。所以我应该按 id 列分组,按 start_time 排序,并将 70% 的行放入一个数据帧和 30通过保留顺序将 % 的行放入另一个数据框中。结果应如下所示:

Dataframe1:
id start_time feature
1 01-01-2018 3.567
1 01-02-2018 4.454
2 01-02-2018 343.4
3 02-04-2018 43.56
3 02-07-2018 34.56

Dataframe2:
1 01-03-2018 6.455
2 01-08-2018 45.4
3 03-07-2018 23.6

我正在使用 Spark 2.0 和 python。实现这一点的最佳方法是什么?

最佳答案

我必须这样做的方法是创建两个窗口:

w1 =  Window.partitionBy(df.id).orderBy(df.start_time)
w2 = Window.partitionBy(df.id)

df = df.withColumn("row_number",F.row_number().over(w1))\
.withColumn("count",F.count("id").over(w2))\
.withColumn("percent",(F.col("row_number")/F.col("count")))
train = df.filter(df.percent<=0.70)
test = df.filter(df.percent>0.70)

关于apache-spark - 通过保留顺序,根据 id 列将 Spark DataFrame 拆分为两个 DataFrame(70% 和 30%),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52958225/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com