我在 pandas 中有以下 df 数据框:
weekday venta_total_cy
0 Viernes 5.430211e+09
1 Lunes 3.425554e+09
2 Sabado 6.833202e+09
3 Domingo 6.566466e+09
4 Jueves 2.748710e+09
5 Martes 3.328418e+09
6 Miercoles 3.136277e+09
我想做的是按照接下来几天的顺序来订购数据框:
weekday
Lunes
Martes
Miercoles
Jueves
Viernes
Sabado
Domingo
为此,我使用了以下代码:
df['weekday'] = pd.Categorical(df[['weekday']], categories=["Lunes", "Martes", "Miercoles", "Jueves", "Viernes", "Sabado", "Domingo"])
当我运行代码时,出现以下错误:
ValueError: Cannot setitem on a Categorical with a new category, set the categories first
我没有找到足够的文档来解决这个问题。你能帮助我吗?谢谢!
df[['weekday']]
返回一个不正确的数据框。将 series 列转换为分类列。此外,使用 ordered=True
参数在您的分类列中建立顺序。
categories = np.array(
['Lunes', 'Martes', 'Miercoles', 'Jueves', 'Viernes', 'Sabado', 'Domingo'])
df['weekday'] = pd.Categorical(
df['weekday'], categories=categories, ordered=True)
df.sort_values(by='weekday')
weekday venta_total_cy
1 Lunes 3.425554e+09
5 Martes 3.328418e+09
6 Miercoles 3.136277e+09
4 Jueves 2.748710e+09
0 Viernes 5.430211e+09
2 Sabado 6.833202e+09
3 Domingo 6.566466e+09
我是一名优秀的程序员,十分优秀!