Объединение одинаковых имен столбцов при объединении двух фреймов данных с использованием pyspark - PullRequest
0 голосов
/ 17 апреля 2020

В приведенной ниже программе дублирующиеся столбцы создаются при объединении двух фреймов данных в pyspark.

>>> spark = SparkSession.builder.appName("Join").getOrCreate()
>>> dict=[{"Emp_id" : 123 , "Emp_name" : "Raja" }, {"Emp_id" : 456 , "Emp_name" : "Ravi"}]
>>> dict1=[{"Emp_id" : 123 , "Dep_name" : "Computer" } , {"Emp_id" : 456 ,"Dep_name"  :"Economy"}]
>>> df=spark.createDataFrame(dict)
>>> df1=spark.createDataFrame(dict1)
>>> df2=df.join(df1,df.Emp_id == df1.Emp_id, how = 'inner')

>>> df.show()
    +------+--------+
    |Emp_id|Emp_name|
    +------+--------+
    |   123|    Raja|
    |   456|    Ravi|
    +------+--------+

>>> df1.show()
    +--------+------+
    |Dep_name|Emp_id|
    +--------+------+
    |Computer|   123|
    | Economy|   456|
    +--------+------+

>>> df2=df.join(df1,df.Emp_id == df1.Emp_id, how = 'inner')


>>> df2.show()
+------+--------+--------+------+
|Emp_id|Emp_name|Dep_name|Emp_id|
+------+--------+--------+------+
|   123|    Raja|Computer|   123|
|   456|    Ravi| Economy|   456|
+------+--------+--------+------+

Есть ли другой способ получить данные, как показано ниже, в результате объединения с перезаписью столбцов так же, как в SAS?

 +------+--------+--------+
|Emp_id|Emp_name|Dep_name|
+------+--------+--------+
|   123|    Raja|Computer|
|   456|    Ravi| Economy|
+------+--------+--------+

1 Ответ

0 голосов
/ 17 апреля 2020

В вашем состоянии соединения замените df.Emp_id == df1.Emp_id на ['Emp_id']


df2=df.join(df1,['Emp_id'], how = 'inner')
df2.show()

#+------+--------+--------+
#|Emp_id|Emp_name|Dep_name|
#+------+--------+--------+
#|   123|    Raja|Computer|
#|   456|    Ravi| Economy|
#+------+--------+--------+
...