我正在做一个项目,我有一个pyspark数据框的两个列(字符串,字符串计数)分别是字符串和bigint。数据集是脏的,以至于一些单词附加了一个非字母字符(例如'date','_date','!date'和'date,'都是单独的项目,但应该只是'date')
print(dirty_df.schema)
output---> StructType([StructField('count', LongType(), True), StructField('word', StringType(), True)])
dirty_df.show()
+------+------+
| count| word|
+------+------+
|32375 | date|
|359 | _date|
|306 | !date|
|213 | date,|
|209 | snap|
|204 | ^snap|
|107 | +snap|
|12 | snap?|
我需要减少dataframe,这样date,_date,!date和date都只是'date',它们的计数被更新以匹配。问题是:我需要避免加入类似的单词,如“日期”,“约会”,“约会”,“今天”等。
目标
+------+------+
| count| word|
+------+------+
|33253 | date|
|532 | snap|
你觉得我该怎么做?
2条答案
按热度按时间eqzww0vc1#
使用**
regexp_replace
**函数,替换所有特殊字符([^a-zA-Z] replace all characters other than alphabets)
。一米二米一x
Other way:
如果只想替换特定字符,则使用**
translate
**函数tp5buhyn2#
您可以使用
regex_replace
删除任何特殊字符。[^a-zA-Z]
,此正则表达式将匹配除小写和大写字母以外的任何字符other(^ not operator)。