获取值时,python pandas对象类型dict错误

时间:2015-05-24 00:36:29

标签: python dictionary pandas types

我的数据框df具有> 2000列,具有不同的数据类型。我计划将那些非数字分类变量转换为数字变量。所以,我需要先获取这些列名。

col_dataType = df.columns.to_series().groupby(df.dtypes).groups

col_dataType是具有这3个值的字典

col_dataType.keys()
Out: [dtype('O'), dtype('int64'), dtype('float64')]

现在当我尝试使用object数据类型获取列时,即对应于dtype('O')的列表

col_dataType["dtype('O')"]

它一直给我键值错误,即使没有双引号它也不起作用。如何获取列名?

我采用了unutbu的解决方案。

1 个答案:

答案 0 :(得分:3)

您可以使用df.select_dtypes

In [58]: df = pd.DataFrame({'foo':[1,2,3], 'bar':['a','b','c'], 'baz':[1.2,3.4,5.6]})

In [59]: df.select_dtypes(exclude=[np.number])
Out[59]: 
  bar
0   a
1   b
2   c

col_dataType中的键的类型为numpy.dtype,而不是字符串:

In [67]: [type(item) for item in col_dataType.keys()]
Out[67]: [numpy.dtype, numpy.dtype, numpy.dtype]

所以

In [68]: col_dataType[np.dtype('O')]
Out[68]: ['bar']

有效,但我认为df.select_dtypes应该是首选,因为它使用了。{ 为此目的而构建的Pandas API方法。