首页 > 解决方案 > 是否有用于查找数字和分类列的 python 函数?

问题描述

从 python 中的 pandas 数据框中拆分/返回分类列和数字列的有效方法是什么?

到目前为止,我正在使用以下函数来查找分类列和数字列。

def returnCatNumList(df):
    
    object_cols = list(df.select_dtypes(exclude=['int', 'float', 'int64', 'float64', 
                                                 'int32', 'float32', 'int16', 'float16']).columns)
    numeric_cols = list(df.select_dtypes(include=['int', 'float', 'int64', 'float64', 
                                                  'int32', 'float32', 'int16', 'float16']).columns)

    return object_cols, numeric_cols

我正在寻找一种有效且更好的方法来做到这一点。任何建议或参考将不胜感激。

标签: pythonpandasdataframecategoriesnumeric

解决方案


您可以通过np.number代替数字列表来简化答案dtype

def returnCatNumList(df):
    
    object_cols = list(df.select_dtypes(exclude=np.number).columns)
    numeric_cols = list(df.select_dtypes(include=np.number).columns)

    return object_cols, numeric_cols

另一个想法是numeric_cols使用Index.difference

def returnCatNumList(df):
    
    object_cols = list(df.select_dtypes(exclude=np.number).columns)
    numeric_cols = list(df.columns.difference(object_cols, sort=False))

    return object_cols, numeric_cols

推荐阅读