def nonNullIntersection(dataList):
    """
    Takes a list of dataframes and returns the list of dataframes with rows that contain a null value in
    any dataframe removed. This is so that the row can be used for training ML Powerflow

    Input:
        dataList: a list of pandas dataframes of the same number of rows
    Output:
        dataListIntersection: a list of pandas dataframes with the rows that contain a null values
        in any row missing.
    """

    masks = []
    for data in dataList:
        mask = data.isna().any(axis=1)
        masks.append(~mask)

    finalMask = masks[0]
    for mask in masks[1:]:
        finalMask = finalMask & mask

    dataListIntersection = []

    for x in range(len(dataList)):
        dataListIntersection.append(dataList[x][finalMask])

    return dataListIntersection