对同一行测试的降序计数列进行排序

时间:2017-11-28 19:58:12

标签: python pandas sorting

我想根据另一列对一列进行排序。 我不知道如何在使用pandas的python中做到这一点。

基本上我想建议按降序推荐测试列 这就是我的数据框:

enter image description here]

这是我试图做的。 按测试列分组然后对计数列进行排序,但它不起作用。

我的代码::

final.groupby(['test'])
final.sort_values(['count'], ascending=False)

这正是我想要的。 enter image description here

1 个答案:

答案 0 :(得分:0)

您可以使用sort_values:

//Number of Cubs
$cubs = rand(1,4);

//GENDER
for ($x = 0; $x < $cubs; $x++) {
    $gender = rand(1,2);
    if ($gender == 1) {
        $cubgender = "Male";
    } elseif ($gender == 2) {
        $cubgender = "Female";
    }

    //COAT COLOR
    $genome  = "ss/ee/ff/Nn/oo/Pa/Sr/So";
    $gepieces = explode("/", $genome);

    $fenome  = "ss/Ee/ff/nn/oo/Pa";
    $fepieces = explode("/", $fenome);

    if ($gepieces[0] === $fepieces[0]) {
        $ss = $gepieces[0];
    } else {
        $ss = rand(1,2);
        if ($ss == 1) {
            $ss = $gepieces[0];
        } else {
            $ss = $fepieces[0];
        }
    }

    if ($gepieces[1] === $fepieces[1]) {
        $ee = $gepieces[1];
    } else {
        $ee = rand(1,2);
        if ($ee == 1) {
            $ee = $gepieces[1];
        } else {
            $ee = $fepieces[1];
        }
    }

    if ($gepieces[2] === $fepieces[2]) {
        $ff = $gepieces[2];
    } else {
        $ff = rand(1,2);
        if ($ff == 1) {
            $ff = $gepieces[2];
        } else {
            $ff = $fepieces[2];
        }
    }

    if ($gepieces[3] === $fepieces[3]) {
        $nn = $gepieces[3];
    } else {
        $nn = rand(1,2);
        if ($nn == 1) {
            $nn = $gepieces[3];
        } else {
            $nn = $fepieces[3];
        }
    }

    if ($gepieces[4] === $fepieces[4]) {
        $oo = $gepieces[4];
    } else {
        $oo = rand(1,2);
        if ($oo == 1) {
            $oo = $gepieces[4];
        } else {
            $oo = $fepieces[4];
        }
    }
echo $cubgender." - ".$ss."/".$ee."/".$ff."/".$nn."/".$oo."<br/>";

}

示例:

final.assign(sortkey = df.test.apply(list).str[0])\
     .sort_values(by=['sortkey','count'], ascending=[True, False])\
     .drop('sortkey', axis=1)

输出:

df = pd.DataFrame({'test':np.random.choice([{'Test1'},{'Test2'},{'Test3'}], 30),'count':np.random.randint(1000,5000, 30)})

df_out = df.assign(sortkey = df.test.apply(list).str[0])\
           .sort_values(by=['sortkey','count'], ascending=[True, False])\
           .drop('sortkey', axis=1)

df_out