Управление несколькими столбцами с повторяющимися именами в фрейме данных pyspark с помощью spark_sanitize_names - PullRequest
0 голосов
/ 15 марта 2020

У меня есть датафрейм со столбцами с повторяющимися именами. Содержимое этих столбцов отличается, но, к сожалению, имена совпадают. Я хотел бы изменить имена столбцов, добавив, скажем, ряд чисел к столбцам, чтобы сделать каждый столбец уникальным, как этот.

foo1 |  foo2  |  laa3  |  boo4 ...
----------------------------------
     |        |        | 

Есть ли способ сделать это? Я нашел инструмент для scala spark здесь, но не для pyspark.

https://rdrr.io/cran/sparklyr/src/R/utils.R#sym -spark_sanitize_names

1 Ответ

1 голос
/ 15 марта 2020

Мы можем использовать перечисление на df.columns, затем добавить index значение к имени столбца.

  • наконец создать фрейм данных с новыми именами столбцов!

In Pyspark:

df.show()
#+---+---+---+---+
#|  i|  j|  k|  l|
#+---+---+---+---+
#|  a|  1|  v|  p|
#+---+---+---+---+

new_cols=[elm + str(index+1) for index,elm in enumerate(df.columns)]
#['i1', 'j2', 'k3', 'l4']

#creating new dataframe with new column names
df1=df.toDF(*new_cols)

df1.show()
#+---+---+---+---+
#| i1| j2| k3| l4|
#+---+---+---+---+
#|  a|  1|  v|  p|
#+---+---+---+---+

In Scala:

val new_cols=df.columns.zipWithIndex.collect{case(a,i) => a+(i+1)}

val df1=df.toDF(new_cols:_*)

df1.show()
//+---+---+---+---+
//| i1| j2| k3| l4|
//+---+---+---+---+
//|  a|  1|  v|  p|
//+---+---+---+---+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...