Skip to main content
 首页 » 编程设计

python之从 Pyspark Dataframe 列中提取文件扩展名

2025年01月19日36unruledboy

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

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

谢谢。

请您参考如下方法:

您可以使用 pyspark.sql.functions.regexp_extract()至 extract the file extension :

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(这会比上述替代方案慢):

import os 
splittext = f.udf(lambda FullPath: os.path.splitext(FullPath)[-1], StringType()) 
df.withColumn("extension", splittext("FullPath")).show() 
#+--------------------+---------+ 
#|            FullPath|extension| 
#+--------------------+---------+ 
#|/tmp/filename.tar.gz|      .gz| 
#+--------------------+---------+