В pandas, как я могу преобразовать столбец DataFrame в объект dtype?
Или еще лучше, в какой-то фактор? (Для тех, кто говорит R, в Python, как я as.factor()?)
Кроме того, какая разница между pandas.Factor и pandas.Categorical?
Ответ 1
Вы можете использовать метод astype для создания серии (один столбец):
Примечание. pd.Factor был устаревшим и был удален в пользу pd.Categorical.
Ответ 2
Factor и Categorical совпадают, насколько я знаю. Я думаю, что изначально он назывался Factor, а затем был изменен на категориальный. Чтобы преобразовать в категориальный, возможно, вы можете использовать pandas.Categorical.from_array, что-то вроде этого:
In [27]: df = pd.DataFrame({'a' : [1, 2, 3, 4, 5], 'b' : ['yes', 'no', 'yes', 'no', 'absent']})
In [28]: df
Out[28]:
a b
0 1 yes
1 2 no
2 3 yes
3 4 no
4 5 absent
In [29]: df['c'] = pd.Categorical.from_array(df.b).labels
In [30]: df
Out[30]:
a b c
0 1 yes 2
1 2 no 1
2 3 yes 2
3 4 no 1
4 5 absent 0
Ответ 3
Также используется функция pd.factorize:
# use the df data from @herrfz
In [150]: pd.factorize(df.b)
Out[150]: (array([0, 1, 0, 1, 2]), array(['yes', 'no', 'absent'], dtype=object))
In [152]: df['c'] = pd.factorize(df.b)[0]
In [153]: df
Out[153]:
a b c
0 1 yes 0
1 2 no 1
2 3 yes 0
3 4 no 1
4 5 absent 2