我有一个PySpark数据帧。如何从下面的列name
中切掉/删除最后5个字符-
from pyspark.sql.functions import substring, length
valuesCol = [('rose_2012',),('jasmine_2013',),('lily_2014',),('daffodil_2017',),('sunflower_2016',)]
df = sqlContext.createDataFrame(valuesCol,['name'])
df.show()
+--------------+
| name|
+--------------+
| rose_2012|
| jasmine_2013|
| lily_2014|
| daffodil_2017|
|sunflower_2016|
+--------------+
我想创建两列,flower
和year
列。
预期产量:
+--------------+----+---------+
| name|year| flower|
+--------------+----+---------+
| rose_2012|2012| rose|
| jasmine_2013|2013| jasmine|
| lily_2014|2014| lily|
| daffodil_2017|2017| daffodil|
|sunflower_2016|2016|subflower|
+--------------+----+---------+
year
我创建的列-
df = df.withColumn("year", substring(col("name"),-4,4))
df.show()
+--------------+----+
| name|year|
+--------------+----+
| rose_2012|2012|
| jasmine_2013|2013|
| lily_2014|2014|
| daffodil_2017|2017|
|sunflower_2016|2016|
+--------------+----+
我不知道怎么把最后五个字切掉,所以我只有花的名字。我试过这样的方法,通过调用length
,但这不起作用。
df = df.withColumn("flower",substring(col("name"),0,length(col("name"))-5))
如何创建只有花名的flower
列?
您可以使用
split
函数。此代码执行您想要的操作:可以使用expr函数
在这种情况下,因为我们想提取字母字符,所以REGEX也可以工作。
相关问题 更多 >
编程相关推荐