【问题标题】:Pyspark: Get substring of Column NamePyspark:获取列名的子字符串
【发布时间】:2026-02-14 16:40:01
【问题描述】:

我是 PySpark 的新手,我想更改我的列名,因为它们中的大多数都有一个烦人的前缀。 我的列名是这样的:

e1013_var1
e1014_var2
e1015_var3
Data_date_stamp

如果存在,我想从列名中删除EXXX_,该怎么做?因为我也想要大写的所有内容,所以到目前为止我的代码看起来像这样

for col in df.columns:
    df= df.withColumnRenamed(col, col.upper())  

感谢您的帮助,谢谢!

【问题讨论】:

    标签: python apache-spark pyspark rename


    【解决方案1】:

    避免 for 循环的一个选项是使用 toDF 重命名 Spark 数据帧的所有列

    import re
    
    df_new = df.toDF(*[re.sub('e\d+_', '', c).upper() for c in df.columns])
    
    print(df_new.columns)
    # ['VAR1', 'VAR2', 'VAR3', 'DATA_DATE_STAMP']
    

    【讨论】:

      【解决方案2】:

      假设烦人的前缀格式是e[digits]_,我们可以使用re.sub

      import re
      
      for col in df.columns:
          new_col = re.sub(r"e\d+_", "", col).upper()
          df = df.withColumnRenamed(col, new_col)
      

      【讨论】: