lambda函数来查找值是否为布尔值



我有以下DF:

is_bool
True
False
NaN
foo
3

我希望使用pandas_schema对此专栏进行验证。这是我写的函数,我认为它是不正确的:

def check_bool(byte):
try:
bool(byte)
except ValueError:
return False
return True
bool_validation = [CustomElementValidation(
lambda b: check_bool(b), 'Value is not is boolean format')]

输出应该告诉一个值何时不是True或False:

row 2 is 'Value is not is boolean format'
row 3 is 'Value is not is boolean format'
row 4 is 'Value is not is boolean format'

您可以使用pandas.Series.apply:

>>> df.is_bool.apply(isinstance, args = (bool,))
0     True
1     True
2    False
3    False
4    False
Name: is_bool, dtype: bool

我认为try-except可以将isinstancebool:一起使用

df = pd.DataFrame({'is_bool':['', True, False, np.nan, 'foo', 3]})
def check_bool(x):
return isinstance(x, bool)
print (df['is_bool'].apply(check_bool))
0    False
1     True
2     True
3    False
4    False
5    False
Name: is_bool, dtype: bool

最新更新