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

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

Linda Hamilton
发布: 2024-11-27 19:30:14
原创
347 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板