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

Pyspark替换Spark数据框列中的字符串

易飞文
2023-03-14
问题内容

我想通过替换子字符串对Spark Dataframe列执行一些基本的处理。最快的方法是什么?

在当前的用例中,我有一个要规范化的地址列表。例如,此数据框:

id     address
1       2 foo lane
2       10 bar lane
3       24 pants ln

会成为

id     address
1       2 foo ln
2       10 bar ln
3       24 pants ln

问题答案:

对于Spark
1.5或更高版本,可以使用功能包:

from pyspark.sql.functions import *
newDf = df.withColumn('address', regexp_replace('address', 'lane', 'ln'))

快速说明:

  • withColumn调用该函数可在数据框中添加(或替换,如果名称存在)列。
  • 该函数regexp_replace将通过替换所有与模式匹配的子字符串来生成新列。


 类似资料:
  • 问题内容: 我有一个像这样的简单数据框: 我需要按日期进行调整: 一切正常。但是现在我需要对其进行透视,并获得一个非数字列: 当然,我会得到一个例外: 我想产生一些东西 有可能吗? 问题答案: 假设组合是唯一的,并且您的唯一目标是枢纽而不是合计,则可以使用(或任何其他不限于数值的函数): 如果这些假设不正确,则必须预先汇总数据。例如,对于最常见的值:

  • 问题内容: 无论如何,有没有使用映射功能或更好的方法来替换整个数据框中的值? 我只知道如何在系列上执行映射。 我想用数字替换“ tesst”和“ set”列中的字符串,例如set = 1,test = 2 这是我的数据集的一个示例:(原始数据集非常大) 最终结果应该是 感谢您的指教, 问题答案: 那呢 正如@Jeff在评论中指出的那样,在熊猫版本<0.11.1中,手动添加到末尾以正确转换tesst

  • 问题内容: 我有一个PySpark DataFrame。如何从下面的列中截断/删除最后5个字符- 我想创建2列,and列。 预期产量: 我创建的列- 我不知道怎么砍最后五个字符,所以我只有花的名字。我通过调用尝试了类似的方法,但这不起作用。 如何创建仅包含花名的列? 问题答案: 您可以使用expr函数

  • 问题内容: 作为一个自学成才的新手,我为自己创造了一个大问题。在将数据插入数据库之前,我一直在将字符串中的撇号(’)转换为双引号(“”),而不是MySQL实际需要的反斜杠和撇号(')。 在我的表增长超过200,000行之前,我认为最好立即解决此问题。所以我做了一些研究,发现SQL REPLACE函数很棒,但是我现在很困惑。 在ASP中,我正在这样做: 如果我在SQL Workbench中查看数据库

  • 问题内容: 我试图用括号内的数字本身替换字符串中的任何数字序列。所以输入: 应该有一个输出: 我正在尝试使用String.replace(a,b)实现它,但没有成功。 问题答案: 试试这个,看看是否可行。 由于您需要使用正则表达式,因此可以考虑使用而不是。

  • 问题内容: 有没有更短的方法可以编写以下代码? 注意,我不需要替换那些确切的值。我只是在寻找一种将5条以上的线变成少于5条线的方法 问题答案: 看起来是使用循环的好机会: 如果您不介意括号,则更快的方法是: