Pyspark-基于列表或词汇表创建列
我是Pyspark的新手,我有一个包含客户id和文本的数据框,其中包含一个关联的值Pyspark-基于列表或词汇表创建列,pyspark,pyspark-dataframes,Pyspark,Pyspark Dataframes,我是Pyspark的新手,我有一个包含客户id和文本的数据框,其中包含一个关联的值 +------+-----+------+ |id |text |value | +------+-----+------+ | 1 | Cat| 5| | 1 | Dog| 4| | 2 | Oil| 1| 我想基于关键字列表分析文本列,并创建一列,告诉我关键字是否在文本字段中,并提取相关值,预期结果如下 List_keywords = ["D
+------+-----+------+
|id |text |value |
+------+-----+------+
| 1 | Cat| 5|
| 1 | Dog| 4|
| 2 | Oil| 1|
我想基于关键字列表分析文本列,并创建一列,告诉我关键字是否在文本字段中,并提取相关值,预期结果如下
List_keywords = ["Dog", Cat"]
出去
最好的方法是什么?我想创建一个包含我的关键字的列表或词汇表,并用for循环对其进行解析,但我相信有更好的方法可以做到这一点
非常感谢请查看解决方案
导入pyspark.sql.F函数
数据=[[1'猫',5],[1'狗',4],[2'油',3]]
df=spark.createDataFrame(数据,['id','text','value'])
df.show()
+---+----+-----+
|id |文本|值|
+---+----+-----+
|1类5类|
|1 |狗| 4|
|2 |油| 1|
+---+----+-----+
keywords=['Dog','Cat']
(
df
.groupby('id','text','value'))
.pivot('文本',关键字)
阿格先生(
F.计数('value')。别名('bool'),
F.max('value')。别名('value'))
)
.fillna(0)
.sort('文本')
).show()
+---+----+-----+--------+---------+--------+---------+
|id |文本|值|狗|狗|值|猫|猫|值|
+---+----+-----+--------+---------+--------+---------+
|1 | Cat | 5 | 0 | 0 | 1 | 5|
|1 |狗| 4 | 1 | 4 | 0 | 0|
|2 |石油| 1 | 0 | 0 | 0|
+---+----+-----+--------+---------+--------+---------+
+------+-----+------+--------+---------+--------+---------+
|id |text |value |bool_Dog|value_Dog|bool_cat|value_cat|
+------+-----+------+--------+---------+--------+---------+
| 1 | Cat| 5|0 | 0| 1| 5|
| 1 | Dog| 4|1 | 4| 0| 0|
| 2 | Oil| 1|0 | 0| 0| 0|