pandas category错误:“无法在具有新类别的分类上设置项目,请先设置类别”

2024-09-28 21:29:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下熊猫数据框:

    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

我要做的是按以下日期顺序订购数据帧:

^{pr2}$

为此,我使用了以下代码:

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

我没有找到足够的文档来解决这个问题。你能帮助我吗?谢谢!在


Tags: 数据代码dftotalcategoriescategoricalweekdaydomingo
1条回答
网友
1楼 · 发布于 2024-09-28 21:29:12

df[['weekday']]返回一个不正确的数据帧。将系列列改为categorical。另外,使用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

相关问题 更多 >