我想通过替换子字符串对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条线的方法 问题答案: 看起来是使用循环的好机会: 如果您不介意括号,则更快的方法是: