将所有整数列更改为类别python

时间:2019-04-18 09:01:45

标签: 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)

3 个答案:

答案 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_dtypesnp.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