Python 2.7 Python-如果DOB和Address1、Address2和PostCode为NULL,则将行作为Badrecord移动到新的数据帧

Python 2.7 Python-如果DOB和Address1、Address2和PostCode为NULL,则将行作为Badrecord移动到新的数据帧,python-2.7,apache-spark-sql,azure-databricks,Python 2.7,Apache Spark Sql,Azure Databricks,我试图将所有4列DOB、Address1、address2和Postcode中的空值行移动到一个新的数据帧中,并用干净的记录保留原始数据场 我已经尝试使用以下代码来解决它 import numpy as np import pandas as pd BadRecords = Data.dropna(subset=['DOB','Address1','Address2','PostCode'], how='any') print(BadRecords)

我试图将所有4列DOB、Address1、address2和Postcode中的空值行移动到一个新的数据帧中,并用干净的记录保留原始数据场

我已经尝试使用以下代码来解决它

import numpy as np
import pandas as pd
BadRecords = Data.dropna(subset=['DOB','Address1','Address2','PostCode'], how='any') 
print(BadRecords)                           

当前代码正在打印整个数据集。它应该只过滤DOB、Address1、Address2和postcode都为空的记录

要获得具有空值的记录,可以按如下方式过滤原始集:

from pyspark.sql.functions import col, isnull
badRecords = Data.filter(isnull(col('DOB')) & isnull(col('Address1')) & isnull(col('Address2')) & isnull(col('PostCode')))
display(badRecords)
dropna
函数返回一个新的数据帧,其中省略了具有空值的行,因此使用它只能获得“良好”记录

还要注意,
how='any'
将删除至少有一个值为null的行,因此,如果只想在所有行都为null时筛选行,则需要使用“all”设置

goodRecords = Data.dropna(subset=['DOB','Address1','Address2','PostCode'], how='all')