是否有用于查找数字列和分类列的python函数?

是否有用于查找数字列和分类列的python函数?,python,pandas,dataframe,categories,numeric,Python,Pandas,Dataframe,Categories,Numeric,在python中,从pandas数据框拆分/返回分类列和数字列的有效方法是什么 到目前为止,我正在使用下面的函数查找分类列和数字列 def returnCatNumList(df): object_cols = list(df.select_dtypes(exclude=['int', 'float', 'int64', 'float64', 'int32', 'float32'

在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

我正在寻找一种高效、更好的方法来实现这一点。如果您有任何建议或参考,我们将不胜感激。

您可以通过
np.number
而不是数字
dtype
s列表来简化您的答案:

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\u cols
use:


只需使用对象数据类型就可以做到这一点

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
我们还可以使用允许我们交互和操作数据类型的

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']
>>> ['sepal_length', 'sepal_width', 'petal_length', 'petal_width']

>>> ['species']