这是我的代码:
l1 = list(train)
for i in (0,len(l1)):
if train[l1[i]].dtypes == object:
train[l1[i]] = pd.Categorical(train[l1[i]])
train.info(verbose=True)
但这只会使第一个变量发生变化,而没有其他变化。 62个对象变量的其余部分不会转换为对象。
你如何做到的?
答案 0 :(得分:1)
通过DataFrame.select_dtypes
获取所有对象列,转换为字典并传递给DataFrame.astype
:
train = train.astype(dict.fromkeys(train.select_dtypes('object').columns, 'category'))