我在pyspark中通过spark.read.csv()
获得了一个数据框。我可以使用df.filter(df['mobile'] == 'Vivo')
过滤数据。现在,我想按多个值过滤“移动”列。
例如,我有一个band_list=['Apple','Samsung','Vivo']
我想过滤此band_list中的'mobile'
值。
我知道一种方法是df.filter((df['mobile'] == 'Apple') | (df['mobile'] == 'Samsung')|(df['mobile'] == 'Vivo'))
,但这并不灵活。
有人可以告诉我另一种解决此问题的方法吗?
答案 0 :(得分:1)
您可以使用isin:
df = spark.createDataFrame(['abc123','Apple','Samsung','ZXC321','Vivo'],"string")
band_list=['Apple','Samsung','Vivo']
df.filter(df.value.isin(band_list)).show()
+-------+
| value|
+-------+
| Apple|
|Samsung|
| Vivo|
+-------+
答案 1 :(得分:0)
>>> df1 = spark.createDataFrame([('spark',),('scala',),('elixir',)],['lang'])
>>> df1.show()
+------+
| lang|
+------+
| spark|
| scala|
|elixir|
+------+
>>> df1.where('''lang in ('spark','scala')''').show()
+-----+
| lang|
+-----+
|spark|
|scala|
+-----+