在 spark 数据帧中找到缺失值后转换为 pandas 数据帧

convert into a pandas dataframe after finding missing values in a spark dataframe

我正在利用以下方法在我的 spark df 中查找缺失值:

from pyspark.sql.functions import col,sum
df.select(*(sum(col(c).isNull().cast("int")).alias(c) for c in df.columns)).show()

来自我下面的示例 spark df:

import numpy as np
from pyspark.sql import SparkSession
spark = SparkSession.builder.appName('SparkByExamples.com').getOrCreate()
data = [
    ("James","CA",np.NaN), ("Julia","",None),
    ("Ram",None,200.0), ("Ramya","NULL",np.NAN)
]
df =spark.createDataFrame(data,["name","state","number"])
df.show()

如何将先前缺失计数行的结果转换为 pandas 数据帧?我的真实 df 有 26 列,在 spark df 中显示它是混乱且未对齐的。

这可能不如带有 table 的实际 pandas df 干净,但希望这对您有用:

从您的第一个代码中删除 .show() 调用: df.select(*(sum(col(c).isNull().cast("int")).alias(c) for c in df.columns)) 您可以为该行分配一个变量或直接使用 toPandas() call

sdf = df.select(*(sum(col(c).isNull().cast("int")).alias(c) for c in df.columns))
new_df = sdf.toPandas().T 
print(new_df)

.T调用是转置数据帧。如果您有多个列,如果不转置它会截断列,您将无法看到所有列。

同样,这没有实际的 table,但至少这比 spark df 更具可读性。

更新: 如果在最后一个变量之后,你可以得到 table 外观,如果你喜欢那种外观,你可以将它转换为 pandas df。可能有另一种方法或更有效的方法来做到这一点,但到目前为止这个方法有效。

pd.DataFrame(new_df)