熊猫:用正则表达式替换为“类别” dtype

时间:2020-10-16 08:13:45

标签: python pandas dataframe

对具有df.replace dtype的数据帧执行category的最佳方法是什么。

假设我创建数据框:

df = pandas.DataFrame(
    [
        ['a'], ['   '], [''] 
    ],
    columns['x'],
    dtype = 'category'
)

print(df.replace(r'^\s*$', numpy.nan, regex=True))

结果:

    x
0   a
1     
2    

例如第1行和第2行中的值不会被替换(因为根据文档,只有字符串才能被替换)。

如果我删除了dtype = 'category'-值将被替换为NaN。

我徘徊-用NaN替换所有列均为category类型的整个数据框中的空白的最佳方法是什么?

是吗

for col in df.columns:
   df[col] = df[col].str.replace(r'^\s*$', numpy.nan, regex=True)

2 个答案:

答案 0 :(得分:1)

来自documentation

重命名类别是通过将新值分配给 Series.cat.categories属性或通过使用rename_categories() 方法

但是

类别也不能为NaN或引发ValueError

答案 1 :(得分:0)

如果空格的数量是固定的,您也可以选择

df[df == '   '] = numpy.nan