问题
使用pandas时,我需要返回每个groupby对象的最大计数行。
数据集
我有一个名为"matches“的数据帧,它看起来像这样:
FeatureID gene pos 0 1_1_1 KRAS_1 6 1 1_1_1 KRAS_2 8 2 1_1_1 KRAS_3 11 3 1_1_1 NRAS_1 3 4 1_1_1 NRAS_2 11 5 1_1_1 NRAS_3 84 6 1_1_10 KRAS_1 4 7 1_1_10 KRAS_2 3 8 1_1_10 KRAS_3 14 9 1_1_10 NRAS_1 4 10 1_1_10 NRAS_2 6 11 1_1_10 NRAS_3 83
我尝试过的
我需要通过FeatureID将数据帧组合在一起,然后获得每个组中的位置计数:
matches.groupby(["FeatureID", "gene"]).count()这会导致:
FeatureID gene 1_1_1 KRAS_1 6 KRAS_2 8 KRAS_3 11 NRAS_1 3 NRAS_2 11 NRAS_3 84 1_1_10 KRAS_1 4 KRAS_2 3 KRAS_3 14 NRAS_1 4 NRAS_2 6
所需输出:
我需要取回每个groupby对象中包含最高计数的行,但我不知道如何做到这一点。
FeatureID gene count 1_1_1 NRAS_3 84 1_1_10 KRAS_3 14
解决方案
下面这行代码返回了每个groupby组的最大值的基因:
matches.groupby(["FeatureID", "gene"]).count().sort_values("pos").groupby(level=0).tail(1)发布于 2018-06-27 10:58:21
您可以在level=0上使用max
matches.groupby(["FeatureID", "gene"]).count().max(level=0)如果保持两个水平
df.groupby(["FeatureID", "gene"]).count().sort_values().groupby(level=0).tail(1)https://stackoverflow.com/questions/51053911
复制相似问题