我有两个数据框,其中一个包含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
所以这是错误的联接。
答案 0 :(得分:0)
我想您要尝试的是联接两个表。要连接两个表,您需要一个公共列,并且由于没有公共列,因此您必须创建一些内容。这就是我要解决的方法:
# 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)
这应该可以解决问题。