当我运行此代码时,我收到以下错误:
import pandas as pd
car_colors = pd.Series(['Blue', 'Red', 'Green'],
dtype='category')
car_data = pd.Categorical(['Yellow', 'Green', 'Red', 'Blue','Purple'],
categories= car_colors, ordered=False)
print car_colors
s = pd.Series(car_data)
s
ValueError:object array 方法不生成数组
但有趣的是,当我删除dtype = 'category'
时,代码运行正常。
简而言之,分类功能是接受系列而不是dtype = 'category'
这是一个错误还是我做错了什么?
答案 0 :(得分:1)
看起来需要在Categorical
中向tolist
添加categories
:
car_colors = pd.Series(['Blue', 'Red', 'Green'],
dtype='category')
car_data = pd.Categorical(['Yellow', 'Green', 'Red', 'Blue','Purple'],
categories = car_colors.tolist(), ordered=False)
s = pd.Series(car_data)
print (s)
0 NaN
1 Green
2 Red
3 Blue
4 NaN
dtype: category
Categories (3, object): [Blue, Red, Green]
EdChum's comment的另一个解决方案是使用cat.categories
:
car_data = pd.Categorical(['Yellow', 'Green', 'Red', 'Blue','Purple'],
categories = car_colors.cat.categories, ordered=False)
s = pd.Series(car_data)
print (s)
0 NaN
1 Green
2 Red
3 Blue
4 NaN
dtype: category
Categories (3, object): [Blue, Green, Red]