考虑以下数据。
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的方法来做到这一点?
最佳答案
In [43]:
data[data['ExonCount']==1].groupby('Species').size()
Out[43]:
Species
Amel 1
Sinv 2
dtype: int64
关于python - 确定与给定值匹配的条目数,按列分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36042117/