Pyspark:获取列名的子字符串

2024-09-28 05:27:55 发布

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

我是PySpark的新手,想更改我的列名,因为大多数列名都有一个讨厌的前缀。 我的列名如下:

e1013_var1
e1014_var2
e1015_var3
Data_date_stamp

如果存在,我想从列名中删除EXXX_,怎么做?因为我也希望所有内容都是大写的,所以到目前为止,我的代码是这样的

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

感谢您的帮助,谢谢


Tags: 内容dfdatadatestampcolpyspark新手
2条回答

一个避免for循环的选项是使用^{}重命名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']

假设恼人的前缀的格式为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)

相关问题 更多 >

    热门问题