python - 如何在 Pandas DATAFRAME 中查找列值具有特定数据类型的行

标签 python pandas

我有一个数据框

name    col1
satya    12
satya    abc
satya    109.12
alex     apple
alex     1000

所以现在我需要显示“col1”列中有 int 值的行。O/p 看起来像

name    col1
satya    12
alex     1000

如果搜索字符串值

name    col1
satya    abc
alex     apple

明智的..请建议一些代码行(可能正在使用 reg)。

最佳答案

让我们从一个简单的正则表达式开始,如果您有一个整数,它将计算为 True,否则为 False:

import re
regexp = re.compile('^-?[0-9]+$')
bool(regexp.match('1000'))
True
bool(regexp.match('abc'))
False

一旦你有了这样的正则表达式,你就可以进行如下操作:

mask = df['col1'].map(lambda x: bool(regexp.match(x)) )
df.loc[mask]

    name    col1
0   satya   12
4   alex    1000

要搜索字符串,您需要执行以下操作:

regexp_str = re.compile('^[a-zA-Z]+$')
mask_str = df['col1'].map(lambda x: bool(regexp_str.match(x)))
df.loc[mask_str]

    name    col1
1   satya   abc
3   alex    apple

编辑

如果 dataframe 是由以下人员创建的,则上述代码将有效:

df = pd.read_clipboard()

(或者,所有变量都作为字符串提供)。

正则表达式方法是否有效取决于 df 的创建方式。例如,如果它是通过以下方式创建的:

df = pd.DataFrame({'name': ['satya','satya','satya', 'alex', 'alex'],
                   'col1': [12,'abc',109.12,'apple',1000] },
                   columns=['name','col1'])

上面的代码会失败并返回 TypeError: expected string or bytes-like object

要使其在任何情况下都能正常工作,需要将类型显式强制转换为 str:

mask = df['col1'].astype('str').map(lambda x: bool(regexp.match(x)) )
df.loc[mask]

    name    col1
0   satya   12
4   alex    1000

字符串也一样:

regexp_str = re.compile('^[a-zA-Z]+$')
mask_str = df['col1'].astype('str').map(lambda x: bool(regexp_str.match(x)))
df.loc[mask_str]

    name    col1
1   satya   abc
3   alex    apple

EDIT2

要找到一个 float :

regexp_float = re.compile('^[-\+]?[0-9]*(\.[0-9]+)$')
mask_float = df['col1'].astype('str').map(lambda x: bool(regexp_float.match(x)))
df.loc[mask_float]

    name    col1
2   satya   109.12

关于python - 如何在 Pandas DATAFRAME 中查找列值具有特定数据类型的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36382248/

相关文章:

python - 在 Pandas 中分组和转换数据

python - Pandas 的大小和计数有什么区别?

python - 如何按分组总和划分 pandas 列中的元素

python - 如何有效地展开 Pandas 中的日期范围跨度?

python - 连接一个 dask 数据框和一个 pandas 数据框

python - 使用python将excel转换为 Feather 格式

Python Mechanize : How to input into TextControl and click on ImageControl icon?

python - 将 PIL.Image 转换为 skimage

python - 在 python 中生成基于间隔的时间戳

python - 如何以matlab样式复制numpy数组