2016-12-10 88 views
1

pyspark.sql.Row對象的列表如下:Pyspark:過濾DataaFrame其中列值的行列表等於某個值對象

[Row(artist=1255340), Row(artist=942), Row(artist=378), Row(artist=1180), Row(artist=813)] 

DataFrame有模式(id, name)我想filter了行,其中id equals some artist in the given Row of list。什麼纔是正確的方法呢?

爲了進一步澄清,我想要做的事,如:select row from dataframe where row.id is in list_of_row_objects

+3

這裏有一種方法:http://stackoverflow.com/questions/35870760/filtering-a-pyspark-dataframe-with-sql-like-in-clause – karthikr

+0

@KarthikRavindra非常感謝:) – bawejakunal

回答

1

主要的問題是有多大list_of_row_objects。如果它很小,則@ Karthik Ravindra提供的鏈接

如果它很大,那麼您可以改爲使用dataframe_of_row_objects。使用dataframe_of_row_objects中的artist列和原始數據框中的id列在數據框和dataframe_of_row_objects之間進行內部聯接。這基本上會刪除不在dataframe_of_row_objects中的任何id。

當然,使用連接比較慢但更靈活。對於不小但仍足夠小以容納內存的列表,您可以使用廣播提示來獲得更好的性能。

相關問題