#python #pandas
#python #pandas
Вопрос:
Если у меня есть следующие данные:
import pandas as pd
df = pd.DataFrame({'a' : [0, 1, 1, 1, 0], 'b' : [2,3,4,5,3], 'c': ['a','b','c','d','e']})
df
a b c
0 0 2 a
1 1 3 b
2 1 4 c
3 1 5 d
4 0 3 e
Есть ли простой способ превратить все целочисленные столбцы в категории? Я могу сделать:
df['a'] = df['a'].astype('category')
для одного столбца, но как для всех сразу? В R я бы просто сделал:
df %>% mutate_if(is.integer, as.factor)
Ответ №1:
Вы должны сделать:
df.select_dtypes(include=['int64']).astype('category')
Ответ №2:
Можете ли вы попробовать следующее:
numerics = ['int16', 'int32', 'int64', 'float16', 'float32', 'float64']
df.select_dtypes(include=numerics).astype('category')
Другое решение:
df._get_numeric_data().astype('category')
Комментарии:
1. Он говорит, что все целочисленные столбцы.
2. Я хочу, чтобы были преобразованы только целочисленные столбцы
3. извините, я не полностью прочитал вопрос. Я пересмотрел решение. не могли бы вы проверить
Ответ №3:
Используйте DataFrame.select_dtypes
с np.integer
для просмотра всех типов целых столбцов и только выбранных столбцов, установленных в category
:
c = df.select_dtypes(np.integer).columns
df[c] = df[c].astype('category')
print (df)
a b c
0 0 2 a
1 1 3 b
2 1 4 c
3 1 5 d
4 0 3 e
print (df.dtypes)
a category
b category
c object
dtype: object