2024-04-23 12:09:31 发布
网友
我有一个带有FullPath列的pyspark数据帧。在
FullPath
如何使用函数os.path.splitext(FullPath)来提取FullPath列中每个条目的扩展名并将它们放入新列中?在
os.path.splitext(FullPath)
谢谢。在
您可以使用^{}到{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(这将比上述备选方案慢):
os.path.splittext()
udf
SQL函数模块中有一个拆分函数,因此您可以在“.”字符上拆分完整路径并获取最后一个元素。假设每个文件路径字符串中只有一个“.”。在
import pyspark.sql.functions as F myDataFrame = myDataFrame.withColumn("pathArray", F.split(myDataFrame.FullPath, ".") myDataFrame = myDataFrame.withColumn("FileExtension", myDataFrame.pathArray.getItem(1))
您可以使用^{} 到{a2}:
但是,如果您想使用
^{pr2}$os.path.splittext()
,则需要使用udf
(这将比上述备选方案慢):SQL函数模块中有一个拆分函数,因此您可以在“.”字符上拆分完整路径并获取最后一个元素。假设每个文件路径字符串中只有一个“.”。在
相关问题 更多 >
编程相关推荐