मैं PySpark में नया हूं और अपने कॉलम के नाम बदलना चाहता हूं क्योंकि उनमें से ज्यादातर में एक कष्टप्रद उपसर्ग है। मेरे कॉलम नाम इस प्रकार हैं:

e1013_var1
e1014_var2
e1015_var3
Data_date_stamp

यदि मौजूद है, तो मैं कॉलम नामों से EXXX_ को हटाना चाहता हूं, यह कैसे करें? जैसा कि मैं भी अपरकेस में सब कुछ चाहता हूं, मेरा कोड अब तक इस तरह दिखता है

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

मदद की सराहना की जाती है, धन्यवाद!

1
Niels 31 अगस्त 2021, 12:18

2 जवाब

सबसे बढ़िया उत्तर

एक विकल्प जो के लिए चक्र से बचता है वह है toDF

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']
0
Ric S 31 अगस्त 2021, 13:19

यह मानते हुए कि कष्टप्रद उपसर्ग का प्रारूप 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)
0
Ghifari Dwiki Ramadhan 31 अगस्त 2021, 12:33