У меня есть подход здесь.
data = [
[0,"1000:10,1001:100,1002:5,1003:7"],
[1,"1002:5,1000:100,1001:15,1003:6"]
]
data_sdf = spark.createDataFrame(data, ['req_id', 'dsp_price_style'])
# the function to split
def split_dsp_price(row):
ls_x = row.dsp_price_style.split(sep=',')
return [row.req_id] + reduce(lambda x, y: x + y, [k.split(sep=':') for k in ls_x if k[:4] in ['1000', '1001']])
fnl_data_rdd = data_sdf.rdd.map(lambda r: split_dsp_price(r))
fnl_data_rdd.take(2)
# [[0, '1000', '10', '1001', '100'], [1, '1000', '100', '1001', '15']]
Это может быть далее преобразовано в DataFrame
или подвергнуто дальнейшей обработке.