是否可以使用pandas的read_csv读取分类列?

时间:2015-05-16 05:49:23

标签: file csv pandas readfile categorical-data

我尝试将dtype参数与read_csv一起传递为dtype={n: pandas.Categorical},但这不能正常工作(结果是一个对象)。 The manual is unclear

2 个答案:

答案 0 :(得分:34)

在版本0.19.0中,您可以在dtype='category'中使用参数read_csv

data = 'col1,col2,col3\na,b,1\na,b,2\nc,d,3'
df = pd.read_csv(pd.compat.StringIO(data), dtype='category')
print (df)
  col1 col2 col3
0    a    b    1
1    a    b    2
2    c    d    3

print (df.dtypes)
col1    category
col2    category
col3    category
dtype: object

如果要为类别使用dtype指定列,请使用字典:

df = pd.read_csv(pd.compat.StringIO(data), dtype={'col1':'category'})
print (df)
  col1 col2  col3
0    a    b     1
1    a    b     2
2    c    d     3

print (df.dtypes)
col1    category
col2      object
col3       int64
dtype: object

答案 1 :(得分:3)

分类不是有效的dtype

StackOverflow post包含有关如何在文本文件中存储分类数据的详细信息。