我有一个pandas df和一堆自定义函数,用于对调查数据进行数据检查。我们有一些例外,其中应该或不应该进行某些数据检查 - 这些检查基于分类变量或日期变量。在做这样的事情时:
def data_check(df):
if df[string_col]== 'some string':
df = package.f1(df, other_col1)
df = package.f2(df, other_col1, other_col2)
if df[date_col]> some_datetime_obj:
df = package.f3(df, other_col3)
return(df)
clean_df = data_check(dirty_df)
我收到此错误:
Truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all()
谢谢!
答案 0 :(得分:0)
df[string_col]
是一个列,但是有些字符串'是一个单一的字符串。当您执行df[string_col]== 'some string'
时,会在列上广播比较=='some string'
。你会为列中的每个值获得一个单独的布尔值,但if
需要一个布尔值。
此外,当您缩进时,您编写的内容会自动解释为代码。你不需要缩进和包围在严重的标记。 (严格标记是这些东西:`)