pandaps:根据列的值对行进行排序

2024-09-27 17:51:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据帧df,如下所示:

ID    NAME    AGE
-----------------
M43   ab      32
M32   df      12
M54   gh      34
M43   ab      98
M43   ab      36
M43   cd      32
M32   cd      39
M43   ab      67

我需要根据ID列对行进行排序。
输出df_grouped应该如下所示:

^{pr2}$

我试过这样的方法:

df_grouped = df.group_by(df.ID)

for id in list(df.ID.unique()):
   grouped_df_list.append(df_grouped.get_group(id))

有更好的办法吗?在


Tags: 数据nameiddfageabgroupcd
2条回答

可以使用^{}按多个列排序:

df = df.sort_values(['ID', 'NAME'])

默认情况下,参数ascending设置为True。在

您可以使用pd.factorize将键转换为表示其出现顺序的唯一数字,然后使用argsort获取索引到帧中的位置,例如:

给予:

     0   1   2
0  M43  ab  32
1  M32  df  12
2  M54  gh  34
3  M43  ab  98
4  M43  ab  36
5  M43  cd  32
6  M32  cd  39
7  M43  ab  67

然后:

^{pr2}$

你会得到:

     0   1   2
0  M43  ab  32
3  M43  ab  98
4  M43  ab  36
5  M43  cd  32
7  M43  ab  67
1  M32  df  12
6  M32  cd  39
2  M54  gh  34

相关问题 更多 >

    热门问题