2024-04-26 10:35:40 发布
网友
我有一个数据框,其中一列(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包含数字的行
df.loc[df["B"].notnull()]
.notnull()
要查找整数和十进制数,请定义一个将字符串作为输入的函数,尝试将值转换为浮点数(如果有整数或浮点数,则会成功),并将处理可能的错误:a ValueError如果向其传递无法转换为浮点数的字符串,则会引发TypeError,如果向float()传递空值,则会引发TypeError,因此请处理以下两个异常:
ValueError
TypeError
float()
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列(按元素),并创建一个布尔掩码:
map()
mask = df['B'].map(safe_float_convert)
并使用.loc[]函数,传入布尔掩码:
.loc[]
numeric_df = df.loc[mask]
要查找整数和十进制数,请定义一个将字符串作为输入的函数,尝试将值转换为浮点数(如果有整数或浮点数,则会成功),并将处理可能的错误:a
ValueError
如果向其传递无法转换为浮点数的字符串,则会引发TypeError
,如果向float()
传递空值,则会引发TypeError
,因此请处理以下两个异常:现在使用
map()
将新函数映射到数据帧的B列(按元素),并创建一个布尔掩码:并使用
.loc[]
函数,传入布尔掩码:相关问题 更多 >
编程相关推荐