pyspark dataframe:添加一个随机采样的新指标列



我有一个spark数据框架包含以下模式:

StructField(email_address,StringType,true),StructField(subject_line,StringType,true)))

我想随机抽取50%的人口作为对照和测试。目前我是这样做的:

df_segment_ctl = df_segment.sample(False, 0.5, seed=0)
df_segment_tmt = df_segment.join(df_segment_ctl, ["email_address"], "leftanti")

但我确信一定有一个更好的方法来创建一个列,而不是像下面的

|       email_address|     segment_id|group    |
+--------------------+---------------+---------+
|xxxxxxxxxx@gmail.com|            1.1|treatment|
|   xxxxxxx@gmail.com|            1.6|control  |

任何帮助都是感激的。我对这个世界是陌生的

更新:我不想把数据框分成两个。只是想添加一个指示列

更新:有可能优雅地进行多次分裂吗?假设我想要一个对照和两个治疗组,而不是两个组

|       email_address|     segment_id|group    | 
+--------------------+---------------+---------+
|xxxxxxxxxx@gmail.com|            1.1|treat_1. | 
|   xxxxxxx@gmail.com|            1.6|control  |
|   xxxxx@gmail.com  |            1.6|treat_2  |

您可以使用如下所示的随机分割来分割spark数据框

df_segment_ctl, df_segment_tmt = df_segment.randomSplit(weights=[0.5,0.5], seed=0)