【问题标题】:Checking the values of one column in a column in another dataframe in pyspark在pyspark中检查另一个数据框中的一列中的一列的值
【发布时间】:2019-10-30 09:22:47
【问题描述】:

我有两个 Pyspark 数据帧(DF1 和 DF2)。我想检查 DF1 中的城市是否在 DF2 的城市列中可用,如果是,则从 DF2 返回国家名称并创建一个新的数据框 DF3,其中包含 Sl.No、City 和 Country。

DF1
无城
1个
2个
2c
4天
5e

DF2
乡村城市

VB,c X d,e

DF3
SL.No City Country 1个瓦 2 b V 3 c V 4天 5 e X

【问题讨论】:

    标签: python pyspark-dataframes


    【解决方案1】:

    这可以通过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|
    +----+----+----+
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-08
      • 2022-01-15
      • 1970-01-01
      • 2014-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-06
      相关资源
      最近更新 更多