【发布时间】:2018-04-04 12:15:47
【问题描述】:
我的 DataFrame 中有两列 first 和 Second 。两列都包含空单元格
| **ID** First |Second|
|----------|---------|------|
| 1 | Toys | |
| | | |
|--------------------|------|
| 2 | | Jeans|
|--------------------|------|
| 3 |Jeans |Shirt |
-----------------------------
我使用将两列连接成一个新列
df=df.select('ID',concat(col("First"), lit(","),col("Second")).alias('ITEM'))
|----------|----------------|
| **ID** **ITEM** |
|----------|----------------|
| 1 | Toys, |
| | |
|---------------------------|
| 2 | ,Jeans |
|---------------------------|
| 3 |Jeans,Shirt |
-----------------------------
我需要删除逗号,以便计算 DataFrame 中每一行的 TF-IDF。为此,我将每行中的字符串列表根据逗号拆分为一个单词列表。
|----------|----------------|
| **ID** **ITEM** |
|----------|----------------|
| 1 | [Toys, ] |
| | |
|---------------------------|
| 2 | [ ,Jeans] |
|---------------------------|
| 3 |[Jeans,Shirt] |
-----------------------------
现在,HashingTF 将空白空间视为一个术语,这给了我一个不正确的 TF-IDF 分数。
我查看了以下链接以删除,
Remove blank space from data frame column values in spark python
也试过了
df.select(regexp_replace(col("ITEM"), ",", "")).show()
删除逗号,然后我无法根据逗号进行拆分。
我也试过用udf
from pyspark.sql.functions import udf
commaRep = udf(lambda x: x.replace(',^\s+$',''))
df=df.withColumn('ITEMS',commaRep('ITEM'))
没有效果。
请帮助。
【问题讨论】:
标签: python regex dataframe pyspark