【问题标题】:Pandas Python: sort dataframe but don't include given rowPandas Python:对数据框进行排序,但不包括给定的行
【发布时间】:2014-11-30 23:24:41
【问题描述】:

我的 df 看起来像这样:

Label                      Base
Label                          
Très à gauche              4.51
Très à droite             10.49
Ni à gauche, ni à droite  24.21
Je ne sais pas             5.60
Au centre                  8.69
A gauche                  23.74
A droite                  22.75

我想按升序排序,但我不希望排序中包含“A gauche”和“A droite”。

下面的代码可以满足我的要求,但我不确定如何从排序中排除“A gauche”和“A droite”。

 df_table = df_table.sort(columns="Base",ascending=True)

预期输出

Label                      Base
Label                          
Très à gauche              4.51
Je ne sais pas             5.60
Au centre                  8.69
Très à droite             10.49
Ni à gauche, ni à droite  24.21
A gauche                  23.74
A droite                  22.75

谢谢

【问题讨论】:

    标签: python sorting pandas dataframe


    【解决方案1】:

    您可能希望过滤掉您不希望包含在排序操作中的行:

    d = df_table
    condition = (d.Label=='A gauche') | (d.Label=='A droite')
    excluded = d[condition]
    included = d[~condition]
    

    然后可以排序

    sorted = included.sort(columns="Base",ascending=True)
    

    如果您希望将排除的行附加到数据框的末尾,您可以这样做:

    pandas.concat([sorted,excluded])
    

    【讨论】:

    • 谢谢。 Q - 如果我不想排序的行在中间,比如第 3 行和第 5 行,我会怎么做?
    • 您要么必须进行更多的拆分和连接,要么可以引入某种加权函数。这可能取决于您的意思是“当我完成排序时将这一行放在第 3 位”还是“当我完成排序后将这一行放在另一行之后”
    猜你喜欢
    • 2020-04-13
    • 2021-03-27
    • 2013-06-05
    • 1970-01-01
    • 2020-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-29
    相关资源
    最近更新 更多