是否有用于查找数字列和分类列的 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

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


一只斗牛犬
浏览 155回答 3
3回答

繁华开满天机

您可以通过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

开心每一天1111

您可以通过简单地使用对象数据类型来做到这一点def returnCatNumList(df):        object_cols = df.select_dtypes(include="object").columns.tolist()    numeric_cols = df.select_dtypes(exclude="object").columns.tolist()    return object_cols, numeric_cols

慕容3067478

我们还可以使用pandas types API,它允许我们交互和操作数据类型def returnCatNumList(df):    object_cols = []    numeric_cols  = []    for label, content in df.items():        if pd.api.types.is_string_dtype(content):            numeric_cols.append(label)        else:            object_cols.append(label)    return object_cols, numeric_cols例子:iris = sns.load_dataset('iris')object_cols, numeric_cols = returnCatNumList(iris)print(object_cols)print(numeric_cols)输出:>>> ['sepal_length', 'sepal_width', 'petal_length', 'petal_width']>>> ['species']
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python