使用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,B.D。
我发现了一些让我从这里开始的事How to count the occurrences of a list item?。
>>> l = ["a","b","b"]
>>> [[x,l.count(x)] for x in set(l)]
[['a', 1], ['b', 2]]
但是,这仅计算包含它的列表中元素的出现次数。
我不知道如何计算数据框中我的列表元素的出现次数。
答案 0 :(得分:0)
尝试
df.BGC_Class.value_counts()
如果这不起作用,请发布您的数据:)
答案 1 :(得分:0)
在相应的列上创建适当的标题可以解决问题:
import pandas as pd
df = pd.read_csv('test2_output copy.tsv', sep='\t', names=['Cluster Number', '#', 'Cluster_Type'])
df.Cluster_Type.value_counts()
<强>输出:强>
t1pks 7
nrps 7
other 3
terpene 2
t1pks-nrps 1
indole 1
谢谢,&#39; Unfun Cat&#39;