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

在熊猫中的数据框中查找非数字行?

董砚
2023-03-14
问题内容

我在pandas中有一个很大的数据框,除了用作索引的列之外,该数据框还应该只有数字值:

df = pd.DataFrame({'a': [1, 2, 3, 'bad', 5],
                   'b': [0.1, 0.2, 0.3, 0.4, 0.5],
                   'item': ['a', 'b', 'c', 'd', 'e']})
df = df.set_index('item')

如何找到df其中具有非数字值的数据框的行?

在这个例子中它的第四行中的数据帧,它具有串'bad'a列。如何以编程方式找到该行?


问题答案:

您可以np.isreal用来检查每个元素的类型(applymap将一个函数应用于DataFrame中的每个元素):

In [11]: df.applymap(np.isreal)
Out[11]:
          a     b
item
a      True  True
b      True  True
c      True  True
d     False  True
e      True  True

如果该行中的所有均为True,则它们均为数字:

In [12]: df.applymap(np.isreal).all(1)
Out[12]:
item
a        True
b        True
c        True
d       False
e        True
dtype: bool

因此,要获取路由的subDataFrame,(请注意:上面的否定〜会找到至少具有一个流氓非数字字符的那些):

In [13]: df[~df.applymap(np.isreal).all(1)]
Out[13]:
        a    b
item
d     bad  0.4

您还可以找到可以使用argmin的
第一个
罪犯的位置:

In [14]: np.argmin(df.applymap(np.isreal).all(1))
Out[14]: 'd'

正如@CTZhu指出的那样,检查它是int还是float的实例可能会稍快一些(np.isreal会有一些额外的开销):

df.applymap(lambda x: isinstance(x, (int, float)))


 类似资料:
  • 问题内容: 我有一个pandas.DataFrame,它在连续的时间点进行了测量。与每次测量一起,被观察系统在每个时间点都有不同的状态。因此,DataFrame还包含一列,其中包含每次测量时系统的状态。状态更改比测量间隔慢得多。结果,指示状态的列可能看起来像这样(索引:状态): 是否有一种简单的方法来检索连续相等状态的每个段的索引。那意味着我想得到这样的东西: 结果也可能与普通列表有所不同。 到目

  • 问题内容: 我想查看数据框内特定列中是否存在特定字符串。 我遇到了错误 ValueError:系列的真值不明确。使用a.empty,a.bool(),a.item(),a.any()或a.all()。 问题答案: 将返回大小为布尔值的指标向量 因此,您可以使用 或者,如果您不在乎有多少条记录与您的查询匹配

  • 我想使用两列作为行ID,同时计算基于时间的分组。请看下图: 转化成这样: 正在发生的是,X在时间10发生了0次,但在15和23发生了1次。 Y在10点钟发生了3次,但在15和23没有。等等。

  • 我的任务是突出显示熊猫数据框中的所有电子邮件副本。是否有一个函数用于此操作,或者有一种方法可以删除所有非重复项,从而为我留下一个很好的列表,列出数据集中的所有重复项? 该表由六列组成: 我想摆脱最后一列,因为最后一封邮件不是重复的。

  • 问题内容: 我有两个看起来像这样的数据框: 现在,如果我利用pandas .isin函数,我可以做一些漂亮的事情 列和from存在于while中不 我的问题是:是否有人知道为df_2中但不存在于df_1中的列返回列标签的方法 像这样的东西 先感谢您! 问题答案: 熊猫索引对象具有类似集合的属性,因此您可以直接执行以下操作: 您还可以使用运算符来计算交集,并集和对称差: 过去存在差异的运算符,现已弃

  • 我有一个熊猫数据框,它有语料库的术语频率,术语为行,年份为列,就像这样: 我希望能够通过将每个单词的值除以给定年份的总单词数来标准化它们——有些年份包含两倍多的文本,所以我试图按年缩放(像谷歌图书一样)。我已经看了如何缩放单个列的例子,克里斯·阿尔邦和我在SO上看到了缩放所有列的例子,但是每次我试图将这个数据框转换为一个数组来缩放时,事情都会窒息列这个词不是数字。(我尝试将术语列设置为索引,但不太

  • 问题内容: 我可以使用 功能来删除将部分或全部列设置为的行。是否存在用于删除所有列的值为0的行的等效函数? 在此示例中,我们要删除数据帧的前4行。 谢谢! 问题答案: 事实证明,这可以向量化的方式很好地表达:

  • 我有两个Pandas Dataframe和,其中是的一部分,我想创建一个Dataframe,其中包含中的code>。 以下是一个例子: 注: 我的DataFrame可能有多个列,但是必须仅在列上进行匹配。