我有一个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'>
我在这里想念什么?
答案 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|
+---+--------+---+