Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Pyspark:具有.isNotNull()和其他2个条件的筛选器函数错误_Python_Apache Spark_Pyspark - Fatal编程技术网

Python Pyspark:具有.isNotNull()和其他2个条件的筛选器函数错误

Python Pyspark:具有.isNotNull()和其他2个条件的筛选器函数错误,python,apache-spark,pyspark,Python,Apache Spark,Pyspark,我试图在Pyspark中过滤我的数据帧,我想将结果写入拼花文件,但每次都会出错,因为我的isNotNull()条件有问题。我在filter函数中有3个条件,如果其中一个条件为true,则结果行应写入拼花地板文件中 我尝试了使用或和|的不同版本,以及使用isNotNull()的不同版本,但没有任何帮助 这是我尝试过的一个例子: 从pyspark.sql.functions导入col 测向滤波器( (df['col1']=='attribute1')| (df['col1']=='attribute

我试图在Pyspark中过滤我的数据帧,我想将结果写入拼花文件,但每次都会出错,因为我的
isNotNull()
条件有问题。我在
filter
函数中有3个条件,如果其中一个条件为true,则结果行应写入拼花地板文件中

我尝试了使用
|
的不同版本,以及使用
isNotNull()
的不同版本,但没有任何帮助

这是我尝试过的一个例子:

从pyspark.sql.functions导入col
测向滤波器(
(df['col1']=='attribute1')|
(df['col1']=='attribute2')|
(df.where(col(“col2”).isNotNull())
).write.save(“新拼花地板、拼花地板”)
这是我尝试的另一个示例,但在该示例中,它忽略了带有
attribute1
attribute2
的行:

df.filter(
(df['col1']=='attribute1')|
(df['col1']=='attribute2')|
(df['col2'].isNotNull())
).write.save(“新拼花地板、拼花地板”)
这是错误消息:

AttributeError:“DataFrame”对象没有属性“\u get\u object\u id”


我希望你能帮助我,我对这个话题还不熟悉。非常感谢你

首先,关于
col1
过滤器,您可以使用
isin
这样做:

df['col1'].isin(['attribute1','attribute2'])

然后:

df.filter((df['col1'].isin(['atribute1','atribute2']))|(df['col2'].isNotNull())


好的,dataframe.column.isNotNull()应该可以工作,但是我没有样本数据来测试它,对不起。

首先,关于
col1
过滤器,您可以使用
isin
这样做:

df['col1'].isin(['attribute1','attribute2'])

然后:

df.filter((df['col1'].isin(['atribute1','atribute2']))|(df['col2'].isNotNull())

好的,dataframe.column.isNotNull()应该可以工作,但是我没有样本数据来测试它,很抱歉。

请参见下面的示例:

from pyspark.sql import functions as F
df = spark.createDataFrame([(3,'a'),(5,None),(9,'a'),(1,'b'),(7,None),(3,None)], ["id", "value"])
df.show()
原始数据帧

+---+-----+
| id|value|
+---+-----+
|  3|    a|
|  5| null|
|  9|    a|
|  1|    b|
|  7| null|
|  3| null|
+---+-----+

现在我们进行过滤器:

df = df.filter( (df['id']==3)|(df['id']=='9')|(~F.isnull('value')))
df.show()

+---+-----+
| id|value|
+---+-----+
|  3|    a|
|  9|    a|
|  1|    b|
|  3| null|
+---+-----+

你看

  • 行(3,'a')
    行(3,null)
    被选中,因为'df['id']==3'
  • 行(9,'a')
    被选中,因为'df['id']==9'
  • 选择了
    行(1,'b')
    ,因为
    ~F.isnull('value')
    ,但未选择
    行(5,null)
    行(7,null)
  • 请参见下面的示例:

    from pyspark.sql import functions as F
    df = spark.createDataFrame([(3,'a'),(5,None),(9,'a'),(1,'b'),(7,None),(3,None)], ["id", "value"])
    df.show()
    
    原始数据帧

    +---+-----+
    | id|value|
    +---+-----+
    |  3|    a|
    |  5| null|
    |  9|    a|
    |  1|    b|
    |  7| null|
    |  3| null|
    +---+-----+
    
    
    现在我们进行过滤器:

    df = df.filter( (df['id']==3)|(df['id']=='9')|(~F.isnull('value')))
    df.show()
    
    +---+-----+
    | id|value|
    +---+-----+
    |  3|    a|
    |  9|    a|
    |  1|    b|
    |  3| null|
    +---+-----+
    
    
    你看

  • 行(3,'a')
    行(3,null)
    被选中,因为'df['id']==3'
  • 行(9,'a')
    被选中,因为'df['id']==9'
  • 选择了
    行(1,'b')
    ,因为
    ~F.isnull('value')
    ,但未选择
    行(5,null)
    行(7,null)

  • 第二种方法很接近,我在
    (df['col2'].isNotNull()
    )后面看到了额外的单引号。这可能是抛出错误。尝试这个
    df.filter((df['col1']=='attribute1')|(df['col1']='attribute2')|(df['col2'].isNotNull()).write.save(“新的拼花地板”)
    抱歉,我想我把它删掉了,因为我认为那只是一个打字错误。在第二个片段中,原始帖子有
    (df['col2'].isNotNull())
    。你接近第二种方法了,我在
    (df['col2'].isNotNull()
    之后看到了额外的单引号。可能是抛出了错误。试试这个
    df.filter((df['col1'='attribute1'))|(df['col1']=='attribute2')|(df['col2'].isNotNull()).write.save(“new_parquet.parquet”)
    抱歉,我想我把它删掉了,因为我认为那只是一个打字错误。在第二个片段中,原始帖子有
    (df['col2'].isNotNull())