假设我有:
df = pd.DataFrame({'gender': np.random.choice([1, 2], 10), 'height': np.random.randint(150, 210, 10)})
我希望将性别列转换为分类变量。如果我尝试使用以下代码:
df['gender'] = pd.Categorical.from_codes(df['gender'], ['female', 'male'])
它将失败。
我可以填充类别。
df['gender'] = pd.Categorical.from_codes(df['gender'], ['N/A', 'female', 'male'])
但是在一些方法中会返回'N/A'
:
In [67]: df['gender'].value_counts()
Out[67]:
female 5
male 5
N/A 0
Name: gender, dtype: int64
我考虑使用None
作为填充值。在value_counts
中它可以正常工作,但是我收到了一个警告:
opt/anaconda3/bin/ipython:1: FutureWarning:
Setting NaNs in `categories` is deprecated and will be removed in a future version of pandas.
#!/opt/anaconda3/bin/python
有更好的方法吗?是否有一种明确从代码到类别的映射方式?
df['gender'].cat.remove_unused_categories(inplace=True)
。还在寻找更好的方法。 - Miki Tebeka