Counter
from collections import Counter
pd.Series(Counter(
(c, i) for i, C in enumerate(zip(*jkl)) for c in C)
).unstack(fill_value=0)
0 1 2 3
A 1 1 0 1
C 1 0 1 1
G 1 0 1 1
T 0 2 1 0
pd.Series(Counter(
(c, i) for i, C in enumerate(zip(*jkl)) for c in C
)).unstack(fill_value=0).T.to_dict('l')
{'A': [1, 1, 0, 1], 'C': [1, 0, 1, 1], 'G': [1, 0, 1, 1], 'T': [0, 2, 1, 0]}
np.add.at
Совершенно другой курс
r, i = np.unique([*''.join(jkl)], return_inverse=True)
n, m = len(r), len(jkl)
j = np.tile(np.arange(n), m)
a = np.zeros((n, n), int)
np.add.at(a, (i, j), 1)
DataFrame
pd.DataFrame(a, r)
0 1 2 3
A 1 1 0 1
C 1 0 1 1
G 1 0 1 1
T 0 2 1 0
Dictionary
dict(zip(r, a.tolist()))
{'A': [1, 1, 0, 1], 'C': [1, 0, 1, 1], 'G': [1, 0, 1, 1], 'T': [0, 2, 1, 0]}