我的DataFrame中有两列第一列和第二列 . 两列都包含空单元格
| **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'))
这没有效果 .
请帮助 .
3 回答
以下应该有效
上述建议的主要变化是:
使用
re
模块在字符串的开头或结尾删除逗号
我可以看看它来自哪里,但通常我们需要更多信息或更多的源代码来查看真正的问题 . 但是你的代码中的某个地方是错位的或者是遗漏的 . “当你的程序自我迭代时,如果你要添加代码以便在添加不必要的代码之后删除那些逗号,则编码添加这些逗号 .
返回源代码,查看填充这些区域的所有打印命令,找到不必要的逗号或发布更多源代码,以便我找到它 .
要么