这个问题已经有了答案:
我有两个pyspark DataFrame :
第一 DataFrame :工厂
+-----+--------+
|plant|station |
+-----+--------+
|Kech | st1 |
|Casa | st2 |
+-----+--------+
第二 DataFrame :站点
+-------+--------+
|program|station |
+-------+--------+
|pr1 | null|
|pr2 | st1 |
+-------+--------+
我想要的是将第二个 DataFrame 站中的空值替换为第一个 DataFrame 中的所有列站。这样地:
+-------+--------------+
|program|station |
+-------+--------------+
|pr1 | [st1, st2]|
|pr2 | st1 |
+-------+--------------+
我做到了:
stList = plants.select(F.col('station')).rdd.map(lambda x: x[0]).collect()
stations = stations.select(
F.col('program')
F.when(stations.station.isNull(), stList).otherwise(stations.station).alias('station')
)
但是当不接受python list作为参数时,它会给我一个错误