Pandas数据帧:计算数据帧行

时间:2018-06-07 19:03:06

标签: python list pandas dataframe elements

使用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]]

但是,这仅计算包含它的列表中元素的出现次数。

我不知道如何计算数据框中我的列表元素的出现次数。

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;