如何从pysparkDataframe中的字符串中删除特定字符?

ttygqcqt  于 2021-07-13  发布在  Spark
关注(0)|答案(3)|浏览(790)

我想从列中的值中删除最后两个字符。
pysparkDataframe的值如下所示:

1000.0
1250.0
3000.0
...

它们应该是这样的:

1000
1250
3000
...

谨致问候

zaq34kh6

zaq34kh61#

你可以用 substring 获取字符串直到索引 length - 2 :

import pyspark.sql.functions as F

df2 = df.withColumn(
    'col', 
    F.expr("substring(col, 1, length(col) - 2)")
)
ru9i0ody

ru9i0ody2#

你可以用 regexp_replace :

from pyspark.sql import functions as F

df1 = df.withColumn("value", F.regexp_replace("value", "(.*).{2}", "$1"))

df1.show()

# +-----+

# |value|

# +-----+

# | 1000|

# | 1250|

# | 3000|

# +-----+

或者 regexp_extract :

df1 = df.withColumn("value", F.regexp_extract("value", "(.*).{2}", 1))
n8ghc7c1

n8ghc7c13#

你可以使用这个函数 substring_index 要提取周期之前的部分:

df = spark.createDataFrame([['1000.0'], ['2000.0']], ['col'])
df.withColumn('new_col', F.substring_index(F.col('col'), '.', 1))

结果:

+------+-------+
|   col|new_col|
+------+-------+
|1000.0|   1000|
|2000.0|   2000|
+------+-------+

相关问题