当前位置: 首页 > 面试题库 >

检查DataFrame中的哪些列是分类的

颛孙昆
2023-03-14
问题内容

我是Pandas的新手,我想以一种简单通用的方法来查找categorical我的哪些列DataFrame,而无需手动指定每种列类型,这与本SO问题不同。使用以下项df创建:

import pandas as pd
df = pd.read_csv("test.csv", header=None)

例如

           0         1         2         3        4
0   1.539240  0.423437 -0.687014   Chicago   Safari
1   0.815336  0.913623  1.800160    Boston   Safari
2   0.821214 -0.824839  0.483724  New York   Safari

更新(2018/02/04)问题假设数值列不是分类的,@Zero 接受的答案解决了这个问题。

注意-正如@Sagarkar的评论指出的那样,这并不总是正确的。
困难在于数据类型和分类/有序/标称类型是正交的概念,因此在它们之间进行映射并不容易。@Jeff的答案在下面指定了实现手动映射的精确方式。


问题答案:

您可以df._get_numeric_data()用来获取数字列,然后找出分类列

In [66]: cols = df.columns

In [67]: num_cols = df._get_numeric_data().columns

In [68]: num_cols
Out[68]: Index([u'0', u'1', u'2'], dtype='object')

In [69]: list(set(cols) - set(num_cols))
Out[69]: ['3', '4']


 类似资料:
  • 问题内容: 我正在尝试检查python列中是否包含某个值。我正在使用,我毫不怀疑它是一个很好的工具。问题是我有超过350K的行,并且输出不会显示所有的行,因此我可以查看该值是否实际包含在内。简而言之,我只想知道(Y / N)列中是否包含特定值。我的代码如下: 问题答案: 我认为如果需要行,其中column的值包含string : 或者,如果的列是: 如果要检查 列中的最后4位数字: 样品:

  • 问题内容: 如果我有这样的框架 我想检查这些行中是否包含某个单词,我只需要这样做。 输出: 如果我决定列出一个清单 如何检查列表中的行是否包含某个单词? 问题答案: 该方法接受正则表达式模式: 由于支持正则表达式模式,因此您还可以嵌入标志:

  • 如果我有这样一个框架 我想检查这些行中是否有包含某个单词的行,我必须这样做。 输出: 如果我决定列一个清单: 如何检查行是否包含列表中的某个单词?

  • 给定一个包含可能分散在各处的NaN值的pandas数据frame: 问题:如何确定哪些列包含NaN值?特别是,我可以获得包含NANS的列名列表吗?

  • 问题内容: 在Python Pandas中,检查DataFrame是否具有一个(或多个)NaN值的最佳方法是什么? 我知道函数,但是这会为每个元素返回一个布尔值的DataFrame。此处的帖子也无法完全回答我的问题。 问题答案: jwilner的反应是现场的。我一直在探索是否有更快的选择,因为根据我的经验,求平面数组的总和(奇怪)比计数快。这段代码似乎更快: 速度稍慢,但当然还有其他信息-的数量。