Хотите сравнить один столбец со всеми другими, чтобы найти ненулевые значения, в результате подсчитайте число, где оба ненулевые - PullRequest
1 голос
/ 25 октября 2019

у меня около 24 столбцов в дф. Я хочу сравнить один столбец со всеми остальными, чтобы найти, где значения отличны от нуля, и посчитать все ненулевые значения. Вот как выглядит пример того, как выглядит df.

Col A   Col B    ColC
1         1       2
2         2       5
0         1       1
4         0       0
0         0       3
0         9       0
1         0       8
2         2       0

Я хочу увидеть ненулевые значения, а затем подсчитать и подсчитать все, где оба столбца отличны от нуля. Итак, я хочу, чтобы Col A сначала сравнивался с B, а затем C. Затем Col B с A, а затем C и так далее ...

Я могу написать вручную один за другим для сравнения. Но я хочу написать функцию, где это делается автоматически.

1 Ответ

1 голос
/ 25 октября 2019

Создайте все комбинации имен столбцов, затем сравните для не равных на 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
...