Создайте все комбинации имен столбцов, затем сравните для не равных на ne
и проверьте, являются ли оба значения True
на DataFrame.all
и последний счет True
s значений на sum
впонимание списка:
from itertools import combinations
out = [(', '.join(x), df.loc[:, x].ne(0).all(1).sum()) for x in combinations(df.columns, 2)]
print (out)
[('ColA, ColB', 3), ('ColA, ColC', 3), ('ColB, ColC', 3)]
df = pd.DataFrame(out, columns=['cols','count'])
print (df)
cols count
0 ColA, ColB 3
1 ColA, ColC 3
2 ColB, ColC 3