您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何在由一列定义的分区中进行排序,但如何将分区保留在原位置?

如何在由一列定义的分区中进行排序,但如何将分区保留在原位置?

您可以transform用来取回新的所需索引顺序,然后用于reindex重新排列DataFrame:

# Use transform to return the new ordered index values.
new_idx = df.groupby('A')['B'].transform(lambda grp: grp.sort_values().index)

# Reindex.
df = df.reindex(new_idx.rename(None))

如果需要,可以将上面的两行合并为一条长行。

结果输出

   A  B
5  X  3
4  X  4
7  Y  1
6  Y  2
1  X  7
0  X  8
3  Y  5
2  Y  6

请注意,如果您不关心维护旧索引,则可以直接从中重新分配transform

df['B'] = df.groupby('A')['B'].transform(lambda grp: grp.sort_values())

产生:

   A  B
0  X  3
1  X  4
2  Y  1
3  Y  2
4  X  7
5  X  8
6  Y  5
7  Y  6
其他 2022/1/1 18:41:52 有467人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶