【问题标题】:how to join two differents dataframes in pyspark?如何在pyspark中加入两个不同的数据框?
【发布时间】:2019-08-20 22:43:02
【问题描述】:

我有两个数据框,其中一个包含 X 年、月和度量列,并且
x1, x2 对应于第一天和第二天的列 天 。第一个数据框是:

X year month                   measure                   X1        X2
1     1 2014    12          Max.TemperatureF             64        42
2     2 2014    12         Mean.TemperatureF             52        38
3     3 2014    12          Min.TemperatureF             39        33

只有我有日子的第二个数据框。

         X3   X4      X5    X6    X7
         1    51      43    42    45    
         2    44      37    34    42    
         3    37      30    26    38    

所以我想加入两个数据框并在pyspark中获取

 X year month                 measure          X1   X2  X3  X4  X5  X6  
'1     1 2014    12       Max.TemperatureF     64   42  1   51  43  42     
'2     2 2014    12       Mean.TemperatureF    52   38  2   44  37  34  
'3     3 2014    12       Min.TemperatureF     39   33  3   37  30  26     

我加入了他们,但他们得到一个数据帧在另一个数据帧之上,而不是他们保持在同一行

  from functools import reduce 
  from pyspark.sql import DataFrame


  def unionAll(*dfs):
  return reduce(DataFrame.unionAll, dfs)

  td = unionAll(*[weather1, weather2])

        X year month             measure               X1        X2
      1     1 2014    12          Max.TemperatureF     64        42
      2     2 2014    12         Mean.TemperatureF     52        38
      3     3 2014    12          Min.TemperatureF     39        33
            X3      X4    X5    X6    
       1    51      43    42    45    
       2    44      37    34    42    
       3    37      30    26    38

所以这是一个错误的加入。

【问题讨论】:

    标签: pyspark


    【解决方案1】:

    我想你想要做的是加入两个表。要连接两个表,您需要一个公用列,并且由于您没有公用列,因此您必须创建一些东西。这就是我要解决的问题:

    # Copy the entire 'X' column (which I am assuming is the index)
    weather2 = weather2.withColumn('X', weather1['X'])
    
    # Join the two tables on 'X'
    joinExpr = 'X'
    td = weather1.join(weather2, joinExpr)
    

    这应该可以解决问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-06
      • 2021-11-23
      • 1970-01-01
      • 1970-01-01
      • 2022-01-15
      • 2019-08-01
      相关资源
      最近更新 更多