首页 > 解决方案 > 检查文本列中的数值 - python

问题描述

10 列数据框 (df) 中的 5 列 (col1 - col5) 应为空白或仅具有文本值。如果这 5 列中的任何行具有全数值,我需要触发错误。编写以下代码来识别“col1”中值是全数字的行。(我将使用相同的代码循环浏览所有 5 列):

    df2 = df[df['col1'].str.isnumeric()]

我收到以下错误:ValueError: cannot mask with array contains NA / NaN values

这是因为空白值创建的是 NaN 而不是 False。当我创建一个列表而不是使用以下内容时,我看到了这一点:

    lst = df['col1'].str.isnumeric()

关于如何解决这个问题的任何建议?谢谢

标签: pythonpandasisnumeric

解决方案


试试这个来解决 NaN

import pandas as pd

df = pd.DataFrame([{'col1':1}, {'col1': 'a'}, {'col1': None}])
lst = df['col1'].astype(str).str.isnumeric()
if lst.any():
    raise ValueError()

推荐阅读