具有isin的Pyspark数据框过滤器

时间:2020-10-10 18:34:31

标签: python pyspark

我试图通过多种条件获取数据框的子集,但无法在pyspark中复制常规的熊猫isin行为。可以说,我的目标数据框是(以熊猫为单位):

selection = df[string1.isin(look_string)]

其中string1是来自同一df的列(其他的串联),而look_string是具有一列和不同长度的另一df

string1 = esmm.column1 + esmm.column2 + esmm.column3

除isin之外,我可以对spark中的所有内容进行编码,请尝试

df[df.string1.isin(look_string.look_string)]

我收到一个巨大的错误消息,指出缺少以下已解决的属性 并尝试这个

esmms[df.string1.isin(look_string.select("look_string"))]

我得到这个'DataFrame'对象没有属性'_get_object_id'

什么是最好的进行方式?

1 个答案:

答案 0 :(得分:0)

我认为'isin'方法在搜索列表或字符串时可能有效,也许不在其他数据框的列中搜索。

您可以这样做,将“ look_string”列转换为列表对象:

look_string_list = [row['look_string'] for row in look_string.select('look_string').collect()]

然后在列表上应用'isin'方法。确保在数据框上应用方法“过滤器”,并将该列作为参数。

esmms = df.filter(df.string1.isin(look_string_list))

也许这不是实现所需目标的最有效方法,因为列上的collect方法需要花费一些时间才能将行放入列表中,但我想它是可行的。

相关问题