Динамическое создание нескольких столбцов с использованием цикла в фрейме данных pyspark - PullRequest
0 голосов
/ 15 мая 2019

У меня есть требование, при котором я должен динамически генерировать несколько столбцов в pyspark. Я написал аналогичный код, как показано ниже, чтобы выполнить то же самое.

sc = SparkContext()                                                          
sqlContext = SQLContext(sc)
cols = ['a','b','c']    

df = sqlContext.read.option("header","true").option("delimiter", "|").csv("C:\\Users\\elkxsnk\\Desktop\\sample.csv")

for i in cols:
    df1 = df.withColumn(i,lit('hi'))
df1.show()

Однако я пропускаю столбцы a и b в конечном результате. Пожалуйста, помогите.

Изменен код, как показано ниже. сейчас он работает, но хотел знать, есть ли лучший способ справиться с этим.

cols = ['a','b','c']
cols_add = []
flg_first = 'Y'
df = sqlContext.read.option("header","true").option("delimiter", "|").csv("C:\\Users\\elkxsnk\\Desktop\\sample.csv")
for i in cols:
    print('start'+str(df.columns))
    if flg_first == 'Y':
        df1 = df.withColumn(i,lit('hi'))
        cols_add.append(i)
        flg_first = 'N'
    else:enter code here
        df1 = df1.select(df.columns+cols_add).withColumn(i,lit('hi'))
        cols_add.append(i)
    print('end' + str(df1.columns))

df1.show()
...