如何使用函数对熊猫数据框进行布尔索引

时间:2020-10-06 14:32:17

标签: python pandas

有没有办法在pandas DataFrame中使用布尔索引的方法?

例如:

import pandas


def filter_func(v) -> bool:
    return v == 'asd'


def main():
    df_test = pandas.DataFrame(
        [
            ['sd'], ['asd'], ['sdf']
        ],
        columns=["col-a"]
    )
    #### ERROR: This next line calls filter_func with all contents of column 'col-a'
    result = df_test[df_test['col-a'] == filter_func(df_test['col-a'])]


if __name__ == '__main__':
    main()

在上面的示例中,我只想保留filter_func将返回True的那些值。 result应该包含单行数据框,但是我得到的是空数据框。

我了解到,与其为每行执行一次filter_func,而是只执行一次。

是否可以为每一行调用它?

在这种情况下,我应该为apply使用map还是Series吗?

或者还有其他方法吗?

1 个答案:

答案 0 :(得分:1)

  • @NonNull被该函数过滤,因此只需要df_test['col-a'],而不需要[filter_func(df_test['col-a'])]
  • pandas: Boolean Indexing
[df_test['col-a'] == filter_func(df_test['col-a'])]