5列(col1-col5)在10列数据帧(df)中应为空白或仅具有文本值。如果这5列中的任何一行都具有全数值,则我需要触发错误。编写以下代码,以标识“ col1”中值为全数字的行。 (我将使用相同的代码遍历所有5列):
df2 = df[df['col1'].str.isnumeric()]
我收到以下错误:ValueError:无法使用包含NA / NaN值的数组屏蔽
之所以触发,是因为空白值创建的是NaN,而不是False。当我使用以下命令创建列表时会看到此信息:
lst = df['col1'].str.isnumeric()
关于如何解决此问题的任何建议?谢谢
尝试使用此方法解决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()