相关疑难解决方法(0)

使用isin排除过滤pyspark数据帧

我试图获取数据框中的所有行,其中列值不在列表中(因此通过排除进行过滤).

举个例子:

df = sqlContext.createDataFrame([('1','a'),('2','b'),('3','b'),('4','c'),('5','d')]
,schema=('id','bar'))
Run Code Online (Sandbox Code Playgroud)

我得到了数据框:

+---+---+
| id|bar|
+---+---+
|  1|  a|
|  2|  b|
|  3|  b|
|  4|  c|
|  5|  d|
+---+---+
Run Code Online (Sandbox Code Playgroud)

我只想排除bar所在的行('a'或'b').

使用SQL表达式字符串,它将是:

df.filter('bar not in ("a","b")').show()
Run Code Online (Sandbox Code Playgroud)

有没有办法在不使用SQL表达式的字符串或一次排除一个项目的情况下执行此操作?

编辑:

我可能有一个列表,['a','b'],我想要使用的排除值.

python apache-spark pyspark pyspark-sql

21
推荐指数
4
解决办法
7万
查看次数

PySpark:将DataFrame列的值与另一个DataFrame列匹配

在Pandas DataFrame中,我可以使用DataFrame.isin()函数将列值与另一列匹配.

例如:假设我们有一个DataFrame:

df_A = pd.DataFrame({'col1': ['A', 'B', 'C', 'B', 'C', 'D'], 
                     'col2': [1, 2, 3, 4, 5, 6]})
df_A

    col1  col2
0    A     1
1    B     2
2    C     3
3    B     4
4    C     5
5    D     6         
Run Code Online (Sandbox Code Playgroud)

和另一个DataFrame:

df_B = pd.DataFrame({'col1': ['C', 'E', 'D', 'C', 'F', 'G', 'H'], 
                     'col2': [10, 20, 30, 40, 50, 60, 70]})
df_B

    col1  col2
0    C    10
1    E    20
2    D    30
3    C    40
4    F    50
5 …
Run Code Online (Sandbox Code Playgroud)

python apache-spark pyspark

3
推荐指数
1
解决办法
5819
查看次数

标签 统计

apache-spark ×2

pyspark ×2

python ×2

pyspark-sql ×1