检查pyspark中另一个数据框中一列中一列的值
Checking the values of one column in a column in another dataframe in pyspark
我有两个 Pyspark 数据帧(DF1 和 DF2)。我想检查 DF1 中的城市是否在 DF2 的城市列中可用,如果是,则 return 来自 DF2 的国家/地区名称,并使用 Sl.No、城市和国家/地区创建新数据框 DF3。
DF1
Sl.No城市
1个
2 b
2 c
4天
5 电子
DF2
乡村城市
一个
Vb,c
Xd,e
DF3
Sl.No 城市国家
1 瓦
2bV
3 伏
4 天 X
5 e X
这可以使用 explode
来实现
import pyspark.sql.functions as F
l1 = [(1, 'a', ), (2, 'b', ), (3, 'c'), (4, 'd'), (5, 'e')]
df1 = sqlContext.createDataFrame(l1, ['sino','city'])
#df1.show()
l1 = [('W', ['a'] ), ('V', ['b','c'] ), ('X', ['d', 'e'])]
df2 = sqlContext.createDataFrame(l1, ['ctry','cities'])
#df2.show()
df2 = df2.withColumn('cityName', F.explode('cities'))
df3 = df1.join(df2, df1.city == df2.cityName).drop('cities', 'cityName')
df3.show()
+----+----+----+
|sino|city|ctry|
+----+----+----+
| 1| a| W|
| 3| c| V|
| 5| e| X|
| 2| b| V|
| 4| d| X|
+----+----+----+
我有两个 Pyspark 数据帧(DF1 和 DF2)。我想检查 DF1 中的城市是否在 DF2 的城市列中可用,如果是,则 return 来自 DF2 的国家/地区名称,并使用 Sl.No、城市和国家/地区创建新数据框 DF3。
DF1
Sl.No城市
1个
2 b
2 c
4天
5 电子
DF2
乡村城市
一个
Vb,c
Xd,e
DF3
Sl.No 城市国家
1 瓦
2bV
3 伏
4 天 X
5 e X
这可以使用 explode
来实现import pyspark.sql.functions as F
l1 = [(1, 'a', ), (2, 'b', ), (3, 'c'), (4, 'd'), (5, 'e')]
df1 = sqlContext.createDataFrame(l1, ['sino','city'])
#df1.show()
l1 = [('W', ['a'] ), ('V', ['b','c'] ), ('X', ['d', 'e'])]
df2 = sqlContext.createDataFrame(l1, ['ctry','cities'])
#df2.show()
df2 = df2.withColumn('cityName', F.explode('cities'))
df3 = df1.join(df2, df1.city == df2.cityName).drop('cities', 'cityName')
df3.show()
+----+----+----+
|sino|city|ctry|
+----+----+----+
| 1| a| W|
| 3| c| V|
| 5| e| X|
| 2| b| V|
| 4| d| X|
+----+----+----+