如何解决是否存在用于查找数字和类别列的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','float16']).columns)
return object_cols,numeric_cols
我正在寻找一种有效且更好的方法来做到这一点。任何建议或参考将不胜感激。
解决方法
您可以通过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
,
您只需使用对象dtype即可实现
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
,
我们还可以使用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']
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。