Python 使用regex_extract循环遍历字符串列表
我有一个满是字符串的列表Python 使用regex_extract循环遍历字符串列表,python,regex,string,list,loops,Python,Regex,String,List,Loops,我有一个满是字符串的列表 List = ['NYC','Austin','San Diego', 'New Orleans','LA'] 我有一个数据框,其中有一列“raw”。“原始”中的所有值都是字典值。例如: {'NYC':'COOL','Austin':'mild','San Diego':'hot','New Orleans':'cold','LA':'CHILL'} 我有一个循环,我想使用regex_extract从上面列表中包含字符串的“raw”列中提取值,并为Pyspark d
List = ['NYC','Austin','San Diego', 'New Orleans','LA']
我有一个数据框,其中有一列“raw”。“原始”中的所有值都是字典值。例如:
{'NYC':'COOL','Austin':'mild','San Diego':'hot','New Orleans':'cold','LA':'CHILL'}
我有一个循环,我想使用regex_extract从上面列表中包含字符串的“raw”列中提取值,并为Pyspark dataframe中的每个列创建一个新列
for field in list:
df = df \
.withColumn(field, F.regexp_extract("raw",''+urllib.quote(field)+':"([^"]*)"', 1))
但是当我这样做的时候,它就不起作用了
所以,最终的目标是要有所有这些专栏:'原始','纽约','奥斯汀','圣地亚哥','新奥尔良','洛杉矶'
想知道如何在这里输入参数值吗?试试这个
schema = df.select(schema_of_json(df.select(regexp_replace('raw',' ','_')).first()[0])).first()[0]
df.select(from_json(regexp_replace('raw',' ','_'),schema).alias('data')).\
select('data.*').show()
+------+-----+----+-----------+---------+
|Austin| LA| NYC|New_Orleans|San_Diego|
+------+-----+----+-----------+---------+
| mild|CHILL|COOL| cold| hot|
| mild|CHILL|COOL| cold| hot|
+------+-----+----+-----------+---------+
试试这个
schema = df.select(schema_of_json(df.select(regexp_replace('raw',' ','_')).first()[0])).first()[0]
df.select(from_json(regexp_replace('raw',' ','_'),schema).alias('data')).\
select('data.*').show()
+------+-----+----+-----------+---------+
|Austin| LA| NYC|New_Orleans|San_Diego|
+------+-----+----+-----------+---------+
| mild|CHILL|COOL| cold| hot|
| mild|CHILL|COOL| cold| hot|
+------+-----+----+-----------+---------+