【问题标题】:'list' object has no attribute 'isEmpty' when I want to check if Dataframe is empty当我想检查 Dataframe 是否为空时,“list”对象没有属性“isEmpty”
【发布时间】:2021-08-23 20:47:49
【问题描述】:

我创建了一个数据框 d2 并想应用一个函数来查看它是否为空。我收到错误:'list' 对象没有属性 'isEmpty'

import pyspark
from pyspark.sql import SparkSession
from pyspark.sql.types import DecimalType, FloatType, StructType,StructField, StringType, IntegerType 
from pyspark.sql.types import ArrayType, DoubleType, BooleanType
from pyspark.sql.functions import col,array_contains, monotonically_increasing_id, when
from pyspark.sql.window import Window as W
from pyspark.sql import functions as F
from pyspark.sql.types import StructType,StructField 
from pyspark.sql.types import StringType, IntegerType, ArrayType
from pyspark.sql.functions import round, lit


sc = SparkSession.builder.appName('SparkByExamples.com').getOrCreate()

columns2 = ["Java","Python"]
data2 = [("Java", "20000"), ("Hello", "100000"), ("Scala", "3000")]
df2 = sc.createDataFrame(data2).toDF(*columns2)

print(df2.head(1).isEmpty)

在最后一行我得到一个错误。有人可以帮我吗?

【问题讨论】:

  • 用您自己的话来说,您认为df2.head(1) 是什么意思?当df2 为空时,你认为它会做什么?当df2不为空时,你认为它会做什么?现在,退后一步,想想。 df2 是您要检查它是否为空的东西,对吗? 那个的东西是否提供isEmpty?那有什么作用?能直接解决你的问题吗?那么,你应该写什么代码呢?
  • 你能发布回溯吗?
  • 这是标记为 pandas 但似乎没有涉及 pandas。
  • 或许是。不确定sc.createDataFrame(data2).toDF(*columns2) 做了什么。你能print(type(df2))让我们看看它是什么吗?

标签: python pandas pyspark apache-spark-sql


【解决方案1】:

IsEmpty 是属于 pyspark DataFrame 的方法。 .head() 正在返回Row 对象的列表,如documentation 中所写。 python中的列表对象确实没有称为IsEmpty的方法

【讨论】:

  • 如何检查 Dataframe 是否为空?
  • 只需直接在df2 上拨打isEmpty 就可以了
  • 您可以尝试检查条件df2.count() == 0 是否为True。如果这回答了您的问题,请将其标记为已接受。
  • 看你说的空是什么意思,len(df) == 0?
  • 我收到以下错误:“AttributeError: 'DataFrame' object has no attribute 'isEmpty'”
【解决方案2】:

在最后一行中,您调用 DataFrame.head(),它返回一个 list 而不是文档中所写的 DataFrame。

返回: 如果 n 大于 1,则返回 Row 列表。 如果 n 为 1,则返回单个 Row。

因此,isEmpty() 方法在返回的列表上被调用

【讨论】:

    【解决方案3】:

    df.head(1).isEmpty 不适用于 PySpark。使用这样的东西:

    if len(release_df.head(1)) == 0:
           <do something>
    

    【讨论】:

      猜你喜欢
      • 2014-08-22
      • 2020-09-21
      • 1970-01-01
      • 2023-03-08
      • 1970-01-01
      • 1970-01-01
      • 2014-05-06
      • 1970-01-01
      • 2014-09-01
      相关资源
      最近更新 更多