def _find_idx_without_numerical_difference(df, column1, column2, delta, idx=None, equal_nan=False):
    """
    Returns indices which have bigger numerical difference than delta.

    INPUT:
        **df** (DataFrame)

        **column1** (str) - name of first column within df to compare.
            The values of df[column1] must be numericals.

        **column2** (str) - name of second column within df to compare.
            The values of df[column2] must be numericals.

        **delta** (numerical) - value which defines whether indices are returned or not

    OPTIONAL:
        **idx** (iterable, None) - list of indices which should be considered only

        **equal_nan** (bool, False) - if True, indices are included where at least value in
            df[column1] or df[column2] is NaN

    OUTPUT:
        **index** (pandas.Index) - index within idx where df[column1] and df[column2] deviates by
            at least delta or, if equal_na is True, one value is NaN
    """
    idx = idx if idx is not None else df.index
    idx_isnull = df.index[df[[column1, column2]].isnull().any(axis=1)]
    idx_without_null = idx.difference(idx_isnull)
    idx_no_delta = idx_without_null[(
        df.loc[idx_without_null, column1] -
        df.loc[idx_without_null, column2]).abs().values <= delta]

    if equal_nan:
        return idx.difference(idx_no_delta)
    else:
        return idx_without_null.difference(idx_no_delta)