Sql Pyspark:addnewcolumn在满足指定条件的列中包含一个值,在另一列中包含另一个值

Sql Pyspark:addnewcolumn在满足指定条件的列中包含一个值,在另一列中包含另一个值,sql,pyspark,apache-spark-sql,pyspark-sql,Sql,Pyspark,Apache Spark Sql,Pyspark Sql,“添加新列”在满足指定条件的列中包含与另一列中的另一个值对应的值 例如, 原始DF如下所示: +-----+-----+-----+ |col1 |col2 |col3 | +-----+-----+-----+ | A| 17| 1| | A| 16| 2| | A| 18| 2| | A| 30| 3| | B| 35| 1| | B|

“添加新列”在满足指定条件的列中包含与另一列中的另一个值对应的值 例如, 原始DF如下所示:

    +-----+-----+-----+
    |col1 |col2 |col3 |
    +-----+-----+-----+
    |    A|   17|    1|
    |    A|   16|    2|
    |    A|   18|    2|
    |    A|   30|    3|
    |    B|   35|    1|
    |    B|   34|    2|
    |    B|   36|    2|
    |    C|   20|    1|
    |    C|   30|    1|
    |    C|   43|    1|
    +-----+-----+-----+ 
    +----+----+----+----------+
    |col1|col2|col3|new_column|
    +----+----+----+----------+
    |   A|  17|   1|        17|
    |   A|  16|   2|        17|
    |   A|  18|   2|        17|
    |   A|  30|   3|        17|
    |   B|  35|   1|        35|
    |   B|  34|   2|        35|
    |   B|  36|   2|        35|
    |   C|  20|   1|        20|
    |   C|  30|   1|        20|
    |   C|  43|   1|        20|
    +----+----+----+----------+
我需要为每个col1的组重复col2中对应于col3中1的值。如果col1中的任何一组在col3中有更多的值=1,则重复最小值 所需Df如下所示:

    +-----+-----+-----+
    |col1 |col2 |col3 |
    +-----+-----+-----+
    |    A|   17|    1|
    |    A|   16|    2|
    |    A|   18|    2|
    |    A|   30|    3|
    |    B|   35|    1|
    |    B|   34|    2|
    |    B|   36|    2|
    |    C|   20|    1|
    |    C|   30|    1|
    |    C|   43|    1|
    +-----+-----+-----+ 
    +----+----+----+----------+
    |col1|col2|col3|new_column|
    +----+----+----+----------+
    |   A|  17|   1|        17|
    |   A|  16|   2|        17|
    |   A|  18|   2|        17|
    |   A|  30|   3|        17|
    |   B|  35|   1|        35|
    |   B|  34|   2|        35|
    |   B|  36|   2|        35|
    |   C|  20|   1|        20|
    |   C|  30|   1|        20|
    |   C|  43|   1|        20|
    +----+----+----+----------+
为了获得col2的最小值,我遵循了此链接中接受的答案


有比这个解决方案更好的方法吗?

您的问题假设行是有序的。SQL表表示无序集。您需要一个列来指定顺序。如果不是,则SQL不是此操作的合适工具。col1和COL3中的值是按顺序排列的