当前位置: 首页 > 知识库问答 >
问题:

检查熊猫数据帧列中的字符串类型

邢飞鸿
2023-03-14

我有一个相当大的数据帧(11k行和20列)。其中一列的数据类型是混合的,主要是数字(float),其中有少量字符串分散在各处。

在使用混合列中的数据执行一些统计分析之前,我通过查询其他列来对该数据帧进行子集划分(但如果存在字符串,则无法执行此操作)。99%的时间,一旦子集这个列是纯数字的,但很少字符串值会在子集中结束,我需要捕获它。

通过Pandas混合类型列循环检查字符串(或者反过来检查整个列是否充满数值)的最有效/最具Python风格的方法是什么?

如果列中甚至存在一个字符串,我想引发一个错误,否则继续。

共有2个答案

侯向文
2023-03-14

这是另一种方式。它将列A的值转换为数字,但在出现错误时不会失败:字符串替换为NA。notnull()用于删除这些NA。

df = df[pd.to_numeric(df.A, errors='coerce').notnull()]

但是,如果列中已经有NAs,它们也将被删除。

另请参见:根据对象类型(即str)从数据帧中选择行

锺离宸
2023-03-14

这是一个办法。我不确定它能被矢量化。

import pandas as pd

df = pd.DataFrame({'A': [1, None, 'hello', True, 'world', 'mystr', 34.11]})

df['stringy'] = [isinstance(x, str) for x in df.A]

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

  • 问题内容: 我将Pandas’ver 0.12.0’与Python 2.7结合使用,并具有如下数据框: 该系列由一些整数和字符串组成。它在默认情况下是。我想将的所有内容转换为字符串。我试过了,产生下面的输出。 1) 如何将的所有元素转换为String? 2) 我最终将用于为数据帧建立索引。与具有整数索引相比,在数据帧中具有String索引会降低速度吗? 问题答案: 您可以将id的所有元素转换为使用

  • 如果我有一个包含以下列的数据帧: 我想能够说:这里是一个数据框,给我一个列的列表,它是类型Object还是类型DateTime? 我有一个将数字(Float64)转换为两位小数的函数,我想使用这个特定类型的dataframe列列表,并通过这个函数将它们全部转换为2dp。 也许 吧:

  • 即使数据类型是object,如何检查列是字符串还是其他类型(例如int或float)? (理想情况下,我希望此操作矢量化,而不是检查每一行…) 和在执行 但是,有方法,例如,但没有。 类似地,可以对其进行数学运算,例如 这与其他SO问题不同。他们问列内是否有字符串(而不是整列)。例如: Python:检查dataframe列是否包含字符串类型 检查字符串是否在数据帧中 检查dataframe列中的

  • 我想从字符串类型的熊猫列中删除小数点 Df 我正试着去掉那一栏的小数 df['Net Sales']已经是字符串类型。 我尝试如下: < code>df['净销售额'] = df['净销售额']。astype(str)。替换(' \.0 ','',regex=True) 但我得到的错误如下: < code>ValueError:基数为10的int()的文本无效:“1567.55” 谢谢。

  • 问题内容: 我有一个数据框,其第一列是 例如,如果我愿意,它将给我。但是,我不想提起诉讼。我只想打印。有人可以教我该怎么做吗?非常感谢! 问题答案: 可以通过以下方式实现: 但是解决方案并不通用,如果输入也删除。 因此,解决方案只能在不到一天的时间间隔内正常工作。 更通用的解决方案是创建自定义格式: