обмен столбцов в pyspark - PullRequest
       6

обмен столбцов в pyspark

0 голосов
/ 29 января 2019

У меня в кадре следующий фрейм данных

s s_type o o_type
-----------------  
s1 ss1  o1   oo1   
s2 ss2  o2   oo2

Я хочу поменять столбцы

 s s_type o o_type
 -----------------  
 o1 oo1  s1   ss1   
 o2 oo2  s2   ss2

Один из способов - скопировать столбцы [o, o_type] во временные столбцы ['o_temp','o_type_temp']а затем скопируйте значения [s,s_type] в [o,o_type] и, наконец, ['o_temp','o_type_temp'] в [s,s_type].

Мне было интересно, есть ли лучший / более эффективный способ сделать это?

1 Ответ

0 голосов
/ 29 января 2019

Вы можете просто использовать select с pyspark.sql.Column.alias:

from pyspark.sql.functions import col
df = df.select(
    col("o").alias("s"),
    col("o_type").alias("s_type"),
    col("s").alias("o"),
    col("s_type").alias("o_type")
)

Для более обобщенного решения вы можете создать отображение старого именик новому имени и зациклите это в понимании списка:

# key = old column, value = new column
mapping = {
    "o": "s",
    "o_type": "s_type",
    "s": "o",
    "s_type": "o_type"
}

df = df.select(*[col(old).alias(new) for old, new in mapping.items()])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...