我的数据框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的解决方案。
答案 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方法。