代码之家  ›  专栏  ›  技术社区  ›  Arshanvit

值位于下箱列和上箱列之间的键pyspark

  •  0
  • Arshanvit  · 技术社区  · 4 年前

    我有数据帧 df1 其中有四列:

    key, lower_limit_A1, upper_limit_A1, lower_limit_A2, upper_limit_A2
    1, 10, 20, 90, 100
    2, 10, 20, 100, 110
    3, 20, 30, 110, 120
    4, 20, 30, 120, 130
    5, 30, 40, 130, 140
    6, 30, 40, 140, 150
    

    我有另一个数据帧 df2 其中实际值为 A1

    key_value, A1, A2
    K1, 15, 105
    K2, 35, 145
    K3, 25, 115
    

    我试图根据A1和A2变量组合的定义上限和下限将键与键值相关联:

    key_value, key
    K1, 2
    K2, 6
    K3, 3
    

    到目前为止,我不确定如何继续进行这项工作,但我试图处理antijoin:

    df1.join(
        df2, 
        [df1.lower_limit_A1 <= df2.A1, df1.upper_limit_A1 >= df2.wind_speed], 
        how='left_anti'
    )
    

    帮助感激。

    0 回复  |  直到 4 年前
        1
  •  0
  •   mck    4 年前

    这里应该采用内部连接。您可以指定值A1和A2在限值之间的条件。

    results = df2.join(
        df1,
        df2.A1.between(df1.lower_limit_A1, df1.upper_limit_A1) &
        df2.A2.between(df1.lower_limit_A2, df1.upper_limit_A2)
    ).select('key_value', 'key')