gpt4 book ai didi

python - 如何对 pandas 数据框中的一列字符串进行排序,在其中强制按列排序所依据的字母顺序?

转载 作者:太空宇宙 更新时间:2023-11-03 13:54:58 24 4
gpt4 key购买 nike

我在 python 中有一个数据框,其中一列包含以下字母 D W M Y,分别代表日、周、月、年。我想按照我给它的顺序根据此列对我的数据框进行排序。然而,我能找到的唯一选择是根据字母顺序排序,这不是我需要的。如果可能的话,你能告诉我吗?

下面的数据框是我要排序的示例。我需要首先根据 id 对它进行排序,然后是单位 D、W、M、Y,然后是时间。我尝试使用常规排序功能,但它不起作用,因为它是根据字母顺序对单元进行排序。

数据框

id  time  unit     
1 3 M
2 5 Y
1 12 D
8 6 W
6 1 M
1 2 W

dataframe.sort_values(by=[id,unit,time])

最佳答案

您可以将 unit 列定义为 pd.Categorical然后对列进行排序。

通过这样做,可以根据类别的自定义顺序对有序分类进行排序,并且可以具有最小值和最大值。这可以通过设置一个 categories 列表来完成,该列表将指定排序数据帧时要遵循的顺序。然后,您可以使用 sort_values 对数据框进行简单的排序:

df['unit'] = pd.Categorical(df.unit.tolist(), categories=list('DWMY'))
df.sort_values(['id','unit','time'])

    id  time unit
2 1 12 D
5 1 2 W
0 1 3 M
1 2 5 Y
4 6 1 M
3 8 6 W

关于python - 如何对 pandas 数据框中的一列字符串进行排序,在其中强制按列排序所依据的字母顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57708234/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com