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

标签 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的方法来做到这一点?

最佳答案

过滤df然后调用groupbysize :

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/

相关文章:

python - 使用 SQLAlchemy,如何将一行转换为 "real"Python 对象?

python计算csv列中唯一元素的数量

python - 尝试按对象将行附加到组中的每个组时出现奇怪的行为

python - 从两列创建一个矩阵

python - 这个命令到底是做什么的?

python - Django - 扩展应用程序的模型以覆盖其管理器

python - matplotlib 直方图中的内存泄漏

python - Maya python从另一个py文件调用函数

python - 总结 range() 中的所有整数

python - 检查列中是否包含包含 pandas 数据框中浮点值的对象