比较数据框列的值与列表值

时间:2018-11-14 00:40:44

标签: python python-3.x pyspark

我有一个spark数据框列“ id”和“ articles”,以及值列表“ a_list”,如下所示。

df = spark.createDataFrame([(1, 4), (2, 3), (5, 6)], ("id", "articles"))

a_list = [1, 4, 6]

我正在尝试将列表值与数据框列“ articles”的值进行比较,如果找到匹配项,则将列“ E”更新为1,否则为0

我在下面的代码中使用“ isin”

df['E'] = df.articles.isin(a_list).astype(int)

获取

  

TypeError:意外类型:<type 'type'>

我在这里想念什么?

1 个答案:

答案 0 :(得分:2)

将您的类型提供为字符串"int",而不是int,它是python无法识别的原生type;另外,要在spark数据框中创建列,请使用withColumn方法,而不是直接分配:

df.withColumn('E', df.articles.isin(a_list).astype('int')).show()
+---+--------+---+
| id|articles|  E|
+---+--------+---+
|  1|       4|  1|
|  2|       3|  0|
|  5|       6|  1|
+---+--------+---+