从Pyspark Dataframe列提取文件扩展名

2024-04-23 12:09:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个带有FullPath列的pyspark数据帧。在

如何使用函数os.path.splitext(FullPath)来提取FullPath列中每个条目的扩展名并将它们放入新列中?在

谢谢。在


Tags: 数据path函数目的ospysparkfullpathsplitext
2条回答

您可以使用^{}到{a2}:

import pyspark.sql.functions as f
data = [
    ('/tmp/filename.tar.gz',)
]

df = sqlCtx.createDataFrame(data, ["FullPath"])
df.withColumn("extension", f.regexp_extract("FullPath", "\.[0-9a-z]+$", 0)).show()
#+          +    -+
#|            FullPath|extension|
#+          +    -+
#|/tmp/filename.tar.gz|      .gz|
#+          +    -+

但是,如果您想使用os.path.splittext(),则需要使用udf(这将比上述备选方案慢):

^{pr2}$

SQL函数模块中有一个拆分函数,因此您可以在“.”字符上拆分完整路径并获取最后一个元素。假设每个文件路径字符串中只有一个“.”。在

import pyspark.sql.functions as F 
myDataFrame = myDataFrame.withColumn("pathArray", F.split(myDataFrame.FullPath, ".")
myDataFrame = myDataFrame.withColumn("FileExtension", myDataFrame.pathArray.getItem(1))

相关问题 更多 >