ValueError: fill value must be in categories.

执行下面代码时报错:ValueError: fill value must be in categories

import pandas as pd;
import numpy as np;

df = pd.DataFrame({'a':[1, 2, 3, 4], 'b':['d', 'e', 'f', None]}, dtype='category');
print(df)

df['b'].fillna('k', inplace=True);
print(df)

修正:

import pandas as pd;
import numpy as np;

df = pd.DataFrame({'a':[1, 2, 3, 4], 'b':['d', 'e', 'f', None]}, dtype='category');
print(df)

df['b'] = df['b'].cat.add_categories(['k']);
df['b'].fillna('k', inplace=True);
print(df)

原因:
对于数据类型为category的“b”,fillna函数所填充的值需要已经存在于‘b’中。这句话df['b'] = df['b'].cat.add_categories(['k']);表示在’b’列中新添一个类别k。

结束!

你可能感兴趣的:(python)