当前位置: 首页 > 面试题库 >

删除PySpark数据框列中的最后几个字符

鄢英哲
2023-03-14
问题内容

我有一个PySpark DataFrame。如何从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|
+--------------+

我想创建2列,flowerandyear列。

预期产量:

+--------------+----+---------+
|          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仅包含花名的列?


问题答案:

您可以使用expr函数

>>> from pyspark.sql.functions import substring, length, col, expr
>>> df = df.withColumn("flower",expr("substring(name, 1, length(name)-5)"))
>>> df.show()
+--------------+----+---------+
|          name|year|   flower|
+--------------+----+---------+
|     rose_2012|2012|     rose|
|  jasmine_2013|2013|  jasmine|
|     lily_2014|2014|     lily|
| daffodil_2017|2017| daffodil|
|sunflower_2016|2016|sunflower|
+--------------+----+---------+


 类似资料:
  • 问题内容: 我有一个SQL列,其中的条目是字符串。我需要在剪掉最后两个字符后显示这些条目,例如,如果该条目应输出。 我尝试研究TRIM,但看起来只有在我们知道最后两个字符是什么的情况下,它才能提供修剪功能。但就我而言,我不知道最后两个数字是什么,只需要丢弃它们即可。 简而言之,什么是MySQL字符串操作可以修剪字符串的最后两个字符? 我必须补充一点,字符串的长度不是固定的。它可以是9个字符,11个

  • 问题内容: 我在本地弄乱了pyspark 1.4中的数据帧,并且在使dropplicates方法起作用时遇到了问题。不断返回错误。我不太确定为什么这样做,因为我似乎遵循最新文档中的语法。似乎我缺少该功能的导入。 问题答案: 这不是导入问题。您只是调用了错误的对象。虽然类为,但应用后为纯Python ,列表不提供方法。您想要的是这样的:

  • 我想从。结果应该是ABC,EFG,XYZ,我想用XSL1.0这样的限制。 我正在尝试使用的XSL

  • 如果字符计数超过200,我正在尝试删除UIText字段中的最后一个字符。但它没有效果:

  • 我在R中有一个数据帧,它由大约400个变量(作为列)组成,尽管我只需要25个变量。虽然我知道如何删除特定的列,但由于删除375个变量的不切实际性,是否有任何方法可以删除所有列,但使用变量的字符串名可以删除指定的25个? 谢谢。

  • 问题内容: 有没有一种快速的方法来删除Swift中String中的最后两个字符?我看到有一个简单的方法来删除最后一个字符作为明确指出这里。您知道如何删除最后两个字符吗?谢谢! 问题答案: 更新: Xcode 9•Swift 4或更高版本 字符串现在符合RangeReplaceableCollection,因此您可以直接在字符串中使用收集方法dropLast,因此不再需要扩展。唯一的区别是它返回一个