import pandas as pd import itertools filepath = 'ADR4.dat' vector = [] col_name = ['u', 'u_e', 'g', 'g_e', 'r', 'r_e', 'i', 'i_e', 'z', 'z_e', 'name'] columns_to_use = [35] + list(range(19, 29)) data = pd.read_csv(filepath, sep="\\s+", usecols=columns_to_use, header=None, names=col_name) filtered_data = data.loc[data['name'] != '-'] sorted_data = filtered_data.sort_values(by='name') merged_99_99 = pd.concat([sorted_data[['u', 'g', 'r', 'i', 'z']] == 99.99, sorted_data['name']], axis=1) merged_9_99 = pd.concat([sorted_data[['u_e', 'g_e', 'r_e', 'i_e', 'z_e']] == 9.99, sorted_data['name']], axis=1) counts_99_99 = {} counts_9_99 = {} for filter_number in range(2, 6): for combination in itertools.combinations(['u', 'g', 'r', 'i', 'z'], filter_number): count_true = (merged_99_99[list(combination)] == True).any(axis=1).sum() counts_99_99[combination] = len(merged_99_99) - count_true for combination in itertools.combinations(['u_e', 'g_e', 'r_e', 'i_e', 'z_e'], filter_number): count_true = (merged_9_99[list(combination)] == True).any(axis=1).sum() counts_9_99[combination] = len(merged_9_99) - count_true print(counts_99_99, '\n', counts_9_99)