Pandas 数据框中的自定义排序
在 Pandas 中,有时您可能需要根据自定义顺序对数据框进行排序。这可以通过使用字典来定义所需的排序顺序来实现。
问题:
您有一个 Pandas 数据框,其中有一列包含月份名称。您想要使用自定义字典对此列进行排序,例如:
custom_dict = {'March':0, 'April':1, 'Dec':3}
解决方案:
使用分类系列:
Pandas 0.15 引入了 Categorical Series,它提供了一种优雅的方式来处理这个问题场景:
将月份列转换为分类系列,指定自定义排序:
df['m'] = pd.Categorical(df['m'], ["March", "April", "Dec"])
根据类别对数据帧进行排序列:
df.sort_values("m")
使用中间系列:
在 Pandas 0.15 之前,您可以使用中间系列来实现自定义排序:
将自定义词典应用到月份列:
s = df['m'].apply(lambda x: {'March':0, 'April':1, 'Dec':3}[x])
对中间系列进行排序:
s.sort_values()
将数据框的索引设置为排序后的中间系列,并sort:
df.set_index(s.index).sort()
使用替换方法:
在较新版本的 Pandas 中,Series 提供了替换方法,可以提供更简洁的解决方案:
df['m'].replace({'March':0, 'April':1, 'Dec':3})
此方法将月份值替换为字典中指定的相应排序值。根据修改后的月份列对数据框进行排序将实现所需的自定义顺序。
以上是如何根据字典对 Pandas DataFrame 列进行自定义排序?的详细内容。更多信息请关注PHP中文网其他相关文章!