检查文本列中的数值-python

问题描述 投票:0回答:1

5列(col1-col5)在10列数据帧(df)中应为空白或仅具有文本值。如果这5列中的任何一行都具有全数值,则我需要触发错误。编写以下代码,以标识“ col1”中值为全数字的行。 (我将使用相同的代码遍历所有5列):

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

我收到以下错误:ValueError:无法使用包含NA / NaN值的数组屏蔽

之所以触发,是因为空白值创建的是NaN,而不是False。当我使用以下命令创建列表时会看到此信息:

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

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

python pandas isnumeric
1个回答
0
投票

尝试使用此方法解决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()
© www.soinside.com 2019 - 2024. All rights reserved.