在我的例子中,我有一个包含一些生物数据的数据框,这些数据是:蛋白质名称、ecnumber(可能不止一个)和蛋白质域(也可能不止一个域)。数据框是一列,包含所有这些数据,我想将其拆分为三列,但问题是,如果拆分一行(包含多个ecnumber),则第二个ecnumber将转到第三列,然后域将消失。
这是我的密码:
val df = rdd.toDF()
val mydf = df.withColumn("_tmp", split($"value", ";")).select(
$"_tmp".getItem(0).as("Entry"),
$"_tmp".getItem(1).as("ECnumber"),
$"_tmp".getItem(2).as("Domains")
这是输入图像描述的结果
1条答案
按热度按时间watbbzwu1#
根据提供的引用数据,我发现您可以使用以下正则表达式将数据检索到独立的列中(通过使用正则表达式进行提取):
例如,如果Dataframe值具有以下值:
现在使用正则表达式,可以从Dataframe值中提取独立值:
上图:将在相应的变量中检索所有值:1.)条目:条目字符串2.)ecnumbers:由分号分隔的完整ecnumbers字符串。字符串末尾将出现分号。
3.)域:用分号分隔的完整域字符串。
注意:如果由于任何原因,Dataframe值不是预期的值,则会引发matcherror异常。
在下面的代码中只是打印变量信息。