pandas根据条件

时间:2018-01-26 21:12:27

标签: python pandas

我有一个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()

谢谢!

1 个答案:

答案 0 :(得分:0)

df[string_col]是一个列,但是有些字符串'是一个单一的字符串。当您执行df[string_col]== 'some string'时,会在列上广播比较=='some string'。你会为列中的每个值获得一个单独的布尔值,但if需要一个布尔值。

此外,当您缩进时,您编写的内容会自动解释为代码。你不需要缩进和包围在严重的标记。 (严格标记是这些东西:`)