确定与给定值匹配的条目数,按列分组

时间:2016-03-16 16:54:28

标签: python pandas

考虑以下数据。

Species,Gene,ExonCount
Amel,g1,3
Amel,g2,1
Amel,g3,5
Sinv,g4,1
Sinv,g5,1
Sinv,g6,2
Sinv,g7,2

我想确定外显子数= 1的条目数,按种类分组。这就是我到目前为止所提出的。

import io
import pandas

instream = io.StringIO("""Species,Gene,ExonCount
Amel,g1,3
Amel,g2,1
Amel,g3,5
Sinv,g4,1
Sinv,g5,1
Sinv,g6,2
Sinv,g7,2
""")

data = pandas.read_csv(instream)

for spec in data['Species'].unique():
    ones = sum([1 for x in data.loc[(data.Species == spec)]['ExonCount'] if x == 1])
    print(spec, ones)

它似乎工作正常,但不优雅,我猜它在大型数据帧上效率不高。是否有更好/更清洁/更Pythonic的方式来做到这一点?

1 个答案:

答案 0 :(得分:2)

过滤df,然后调用groupbysize

In [43]:
data[data['ExonCount']==1].groupby('Species').size()

Out[43]:
Species
Amel    1
Sinv    2
dtype: int64