
[英]How do I add multiple values from a dictionary to a PySpark Dataframe
[英]Changing Multiple Values in PySpark Dataframe
我正在处理的数据集样本:
test = sqlContext.createDataFrame([(1,2),
(1,3),
(4,5)],
['cod_item_2','alter_cod'])
test_2 = sqlContext.createDataFrame([(1,"shamp_1"),(2,"shamp_2"),
(4,"tire_1"),(5,"tire_2"),
(3,"shamp_3"),(6,"cookie"),
(7,"flower"),(8,"water")],
['cod_item','product_name'])
第一个 dataframe 包含项目和与其等效的项目。
第二个 dataframe 包含所有项目和产品名称。
我想用第一个 dataframe 拉出与第二个 dataframe 等价的项目,替换为代表它们的项目(第一个表左侧的项目),结果如下:
我尝试对两个数据框进行完全连接并使用when
子句更改值。 但它最终不起作用。
你可以做2个连接。 test_2
与test
然后再次与test_2
(自加入)。 为此,我在数据帧上使用alias
。
from pyspark.sql import functions as F
test_3 = (
test_2.alias('a')
.join(test, F.col("a.cod_item") == F.col("alter_cod"), "left")
.join(test_2.alias('b'), F.col("cod_item_2") == F.col("b.cod_item"), "left")
.select(
F.coalesce("b.cod_item", "a.cod_item").alias("cod_item"),
F.coalesce("b.product_name", "a.product_name").alias("product_name")
)
)
test_3.show()
# +--------+------------+
# |cod_item|product_name|
# +--------+------------+
# | 4| tire_1|
# | 1| shamp_1|
# | 1| shamp_1|
# | 4| tire_1|
# | 7| flower|
# | 6| cookie|
# | 1| shamp_1|
# | 8| water|
# +--------+------------+
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.