考虑使用Dataframe。我想将一组列to_convert
转换为类别。
我当然可以做到以下几点:
for col in to_convert:
df[col] = df[col].astype('category')
但我很惊讶以下内容没有返回数据帧:
df[to_convert].apply(lambda x: x.astype('category'), axis=0)
当然这使得以下内容无效:
df[to_convert] = df[to_convert].apply(lambda x: x.astype('category'), axis=0)
为什么apply
(axis=0
)会返回一个系列,即使它应该逐个对列进行操作?
答案 0 :(得分:7)
这只是在master中修复,因此将在0.17.0中修复,请参阅问题here
In [7]: df = DataFrame({'A' : list('aabbcd'), 'B' : list('ffghhe')})
In [8]: df
Out[8]:
A B
0 a f
1 a f
2 b g
3 b h
4 c h
5 d e
In [9]: df.dtypes
Out[9]:
A object
B object
dtype: object
In [10]: df.apply(lambda x: x.astype('category'))
Out[10]:
A B
0 a f
1 a f
2 b g
3 b h
4 c h
5 d e
In [11]: df.apply(lambda x: x.astype('category')).dtypes
Out[11]:
A category
B category
dtype: object
答案 1 :(得分:3)
请注意,since pandas 0.23.0不再apply
将多列转换为分类数据类型。现在,您可以简单地执行df[to_convert].astype('category')
。