从特定列包含数字的数据框中选择行

2024-04-26 10:35:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据框,其中一列(B列)可以包含字母、数字或任何内容。假设数据帧是:

A   B    C
1   2    Dog
3   C    Bird
30  nan  Cat
11  4.1  Wolf

我想根据B列中是否有数字有条件地获取行:

A   B    C
1   2    Dog
11  4.1  Wolf

我发现可以通过输入df.loc[df["B"].notnull()]将数据帧限制为仅包含值的行。我想知道的是,是否有一个等价版本的.notnull()可以只选择列B包含数字的行


Tags: 数据版本内容df字母数字nan条件
1条回答
网友
1楼 · 发布于 2024-04-26 10:35:40

要查找整数和十进制数,请定义一个将字符串作为输入的函数,尝试将值转换为浮点数(如果有整数或浮点数,则会成功),并将处理可能的错误:a ValueError如果向其传递无法转换为浮点数的字符串,则会引发TypeError,如果向float()传递空值,则会引发TypeError,因此请处理以下两个异常:

def safe_float_convert(x):
    try:
        float(x)
        return True # numeric, success!
    except ValueError:
        return False # not numeric
    except TypeError:
        return False # null type

现在使用map()将新函数映射到数据帧的B列(按元素),并创建一个布尔掩码:

mask = df['B'].map(safe_float_convert)

并使用.loc[]函数,传入布尔掩码:

numeric_df = df.loc[mask]

相关问题 更多 >