首页 >后端开发 >Python教程 >如何根据字典对 Pandas DataFrame 列进行自定义排序?

如何根据字典对 Pandas DataFrame 列进行自定义排序?

Linda Hamilton
Linda Hamilton原创
2024-11-27 19:30:14249浏览

How Can I Custom Sort a Pandas DataFrame Column Based on a Dictionary?

Pandas 数据框中的自定义排序

在 Pandas 中,有时您可能需要根据自定义顺序对数据框进行排序。这可以通过使用字典来定义所需的排序顺序来实现。

问题:
您有一个 Pandas 数据框,其中有一列包含月份名称。您想要使用自定义字典对此列进行排序,例如:

custom_dict = {'March':0, 'April':1, 'Dec':3}

解决方案:

使用分类系列:
Pandas 0.15 引入了 Categorical Series,它提供了一种优雅的方式来处理这个问题场景:

  1. 将月份列转换为分类系列,指定自定义排序:

    df['m'] = pd.Categorical(df['m'], ["March", "April", "Dec"])
  2. 根据类别对数据帧进行排序列:

    df.sort_values("m")

使用中间系列:
在 Pandas 0.15 之前,您可以使用中间系列来实现自定义排序:

  1. 将自定义词典应用到月份列:

    s = df['m'].apply(lambda x: {'March':0, 'April':1, 'Dec':3}[x])
  2. 对中间系列进行排序:

    s.sort_values()
  3. 将数据框的索引设置为排序后的中间系列,并sort:

    df.set_index(s.index).sort()

使用替换方法:
在较新版本的 Pandas 中,Series 提供了替换方法,可以提供更简洁的解决方案:

df['m'].replace({'March':0, 'April':1, 'Dec':3})

此方法将月份值替换为字典中指定的相应排序值。根据修改后的月份列对数据框进行排序将实现所需的自定义顺序。

以上是如何根据字典对 Pandas DataFrame 列进行自定义排序?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn