df.fillna()抛出值错误:填充值必须在类别中

2024-09-30 01:33:40 发布

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

我有一个没有指定数据类型的DataFrame df,这是一个条件频率表,其中标题按以下方式组织:

数据属性,不包括X的所有值v的X | freq_v列

我通过执行外部联接获得频率列,该联接将NaN值引入数据帧。因此df.fillna(0)工作得非常好,直到我使用data.cut()对原始数据集进行离散化,其中数据也是一个数据帧。现在我收到ValueError

到目前为止,我所尝试的:

for header in list(df):
        if 'freq_' in header:
            catcol = pd.Series(df[header], dtype='category')
            catcol.cat.add_categories(0)
            catcol.fillna(0)
            cft[header] = catcol

这应该是将频率列从数据帧中取出,将它们转换为分类序列,这样我就可以引入新的类别,并在用序列覆盖原始列之前应用fillna()。然而,它仍然抛出完全相同的错误。我怎样才能做得更好


Tags: 数据in标题dataframedf属性方式序列
1条回答
网友
1楼 · 发布于 2024-09-30 01:33:40

正如Ben.T所解释的,cat.add_categories返回一个新的序列,因此我需要按以下方式更改代码:

for header in list(df):
        if 'freq_' in header:
            catcol = pd.Series(df[header], dtype='category')
            catcol = catcol.cat.add_categories(0)
            catcol.fillna(0)
            cft[header] = catcol

相关问题 更多 >

    热门问题