如果我有以下数据:
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)
答案 0 :(得分:3)
您必须这样做:
df.select_dtypes(include=['int64']).astype('category')
答案 1 :(得分:2)
您可以尝试以下方法吗?
~/git/go
另一种解决方案:
numerics = ['int16', 'int32', 'int64', 'float16', 'float32', 'float64']
df.select_dtypes(include=numerics).astype('category')
答案 2 :(得分:1)
将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