有没有办法在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
吗?
或者还有其他方法吗?
答案 0 :(得分:1)
@NonNull
被该函数过滤,因此只需要df_test['col-a']
,而不需要[filter_func(df_test['col-a'])]
。[df_test['col-a'] == filter_func(df_test['col-a'])]