Python 如何创建数据帧中所有/大多数列的副本
我希望保留原始列集,但使用映射创建具有更新列名的副本。 例如,如果原始现有数据帧具有列:Python 如何创建数据帧中所有/大多数列的副本,python,pyspark,Python,Pyspark,我希望保留原始列集,但使用映射创建具有更新列名的副本。 例如,如果原始现有数据帧具有列: 'first_name_2020','other_name_2020', 'last_name_2020' 我想输入参数: forename = 'first_name_2020' middlename = 'other_name_2020' surname = 'last_name_2020' previous_surname = None 然后输出一个dataframe,该dataframe包含原
'first_name_2020','other_name_2020', 'last_name_2020'
我想输入参数:
forename = 'first_name_2020'
middlename = 'other_name_2020'
surname = 'last_name_2020'
previous_surname = None
然后输出一个dataframe,该dataframe包含原始列集,但也包含添加了标准化命名的其他列(包括为缺少的名称字段添加的空列)。列的集合大于3/4,因此我需要遍历列表或字典/映射,而不是键入多个固定宽度的列语句
具有如下数据帧:
df_in = spark.sparkContext.parallelize([('JOHN','ANDREW','SMITH'),('JANE','MAY','JONES')]).toDF(['first_name_2020','other_name_2020','last_name_2020'])
希望输出df看起来像:
df_out = spark.sparkContext.parallelize([('JOHN','ANDREW','SMITH','JOHN','ANDREW','SMITH',''),('JANE','MAY','JONES','JANE','MAY','JONES','')]).toDF(['first_name_2020','other_name_2020','last_name_2020','forename','middlename','surname','previous_surname'])
它非常简单,您只需遍历列并将其复制到新的_列中
columns = df.columns
for col_name in columns:
df = df.withColumn(col_name+”_new”, df[col_name])
对于最后一个空列
from pyspark.sql.functions import lit
df = df.withColumn(‘previous_surname’, lit(‘’))