python - 如何有条件地重新排列行顺序

标签 python pandas

我有一个数据集,每个组中都有“未知”。我正在考虑将“未知”放在每组的末尾。 例如: 我有这样的代码:

import pandas as pd
clients1 = {'Name': ['A','B','Unknown','Y','Z','A','B','Unknown','Y','Z'],
        'group': ['1','1','1','1','1','2','2','2','2','2']
       }
df = pd.DataFrame(clients1, columns= ['Name', 'group'])
df

输出:

   Name group
    A   1
    B   1
    Unknown 1
    Y   1
    Z   1
    A   2
    B   2
    Unknown 2
    Y   2
    Z   2

所需的输出应该是:

   Name group
    A   1
    B   1
    Y   1
    Z   1
    Unknown 1
    A   2
    B   2
    Y   2
    Z   2
    Unknown 2

有人知道怎么做吗?

最佳答案

您可以按groupname==Unknown对数据进行排序,因此Unknown标记为True 并放在底部:

df = (df.assign(unknown_name=df['Name'].eq('Unknown'))
        .sort_values(['group','unknown_name'])
     )

输出:

      Name group  unknown_name
0        A     1         False
1        B     1         False
3        Y     1         False
4        Z     1         False
2  Unknown     1          True
5        A     2         False
6        B     2         False
8        Y     2         False
9        Z     2         False
7  Unknown     2          True

关于python - 如何有条件地重新排列行顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70309755/

相关文章:

python - 基于列标准的 Panda Dataframe 重采样

python - 如何从 pandas 创建多间距 CSV?

python - 使用返回 KeyError 的 Pandas 扁平化 JSON

python - Pandas : Data Frame Pruning

python - 为什么 sys.stdout = None 有效?

python - 具有多种状态的 Pygame 动画

python - Mac OS 上的 pybluez 安装错误

Python:通过函数导入到主命名空间

Python Pandas - 有条件地覆盖另一个数据框中的 x 行

python - 如何在 Pandas 的组内使用 cumsum?