Используя python, я хотел бы подсчитать вхождение элементов списков для каждой строки в кадре данных и агрегировать вхождение каждого элемента.
Вот кадр данных, с которым я работаю:
#Cluster_number_1 Cluster Type: terpene
#Cluster_number_2 Cluster Type: nrps
#Cluster_number_3 Cluster Type: terpene
#Cluster_number_4 Cluster Type: nrps
#Cluster_number_5 Cluster Type: nrps
#Cluster_number_6 Cluster Type: nrps
#Cluster_number_7 Cluster Type: t1pks
#Cluster_number_8 Cluster Type: other
#Cluster_number_9 Cluster Type: t1pks
#Cluster_number_10 Cluster Type: nrps
Соответствующий список:
cluster_type = ["t1pks", "nrps", "terpene", "other"]
Желаемый результат:
BGC_Class Count
t1pks 2
nrps 5
terpene 2
other 1
Чтобы помочь объяснить, заимствуя из переменных Unix $:
file = "cluster_counts.txt"
cluster_count = open(file, "w")
cluster_count.write(+$1+"\t"+$2"\n")
Где $ 1является первым элементом в списке, а $ 2 - это число раз, которое оно встречается во всех строках.
Кадры данных не должны превышать 100 строк, поэтому эффективность не имеет значения.
Best, BD
Я нашел кое-что, чтобы начать меня здесь Как подсчитать вхождения элемента списка? .
>>> l = ["a","b","b"]
>>> [[x,l.count(x)] for x in set(l)]
[['a', 1], ['b', 2]]
Однако при этом учитывается только наличие элементов в списке, содержащем его.
Я не знаю, как подсчитать вхождение элементов моих списков в фрейм данных.