Я пытаюсь преобразовать нуклеотид в целое число, используя следующее отображение:
A -> 0
C -> 1
G -> 2
T -> 3
Последовательность нуклеотида сохраняется в pandas фрейме данных и выглядит следующим образом:
0
0 GGATAATA
1 CGATAACC
Я использовал метод df.apply () для выполнения задачи. Вот код:
import pandas as pd
a = ["GGATAATA","CGATAACC"]
d = dict(zip('A C G T'.split(), range(4)))
df = pd.DataFrame(a)
mapping = df[0].apply(lambda s: np.array([d[i] for i in s]))
Возвращает следующий массив numpy, который является одномерным:
print(mapping.values)
array([array([2, 2, 0, 3, 0, 0, 3, 0]), array([1, 2, 0, 3, 0, 0, 1, 1])],
dtype=object)
Однако ожидаемый результат должен быть двумерным массивом:
[[2,2,0,3,0,0,3,0],
[1,2,0,3,0,0,1,1]]