我有一个熊猫系列的布尔值,想知道将“或”或“和”应用于整个系列的最佳方法是什么。我在想一些类似于 Haskell 的东西
fold
据我了解,熊猫
.apply
将对系列中的每个元素应用一个函数,所以似乎没有做我需要的。
谢谢,安妮
要获取True
系列的第一个和所有其他元素是否为True
,我们可以使用该all
方法,如下所示:
import pandas as pd
pd.Series([False, False, False]).all()
# False
pd.Series([False, False, True]).all()
# False
pd.Series([True, True, True]).all()
# True
要获取True
系列的第一个或任何其他元素是否为True
,我们可以使用该any
方法,如下所示:
pd.Series([False, False, False]).any()
# False
pd.Series([False, False, True]).any()
# True
pd.Series([True, True, True]).any()
# True
PS:请注意不包含(仅)布尔值的系列的行为:
pd.Series([]).all()
# True
pd.Series([True, True, 1.0]).all()
# 1.0
pd.Series([True, True, 'foobar']).all()
# 'foobar'
pd.Series(['Non empty', 'strings are', 'truthy']).all()
# 'truthy'
和
pd.Series([]).any()
# False
pd.Series([False, False, 0.0]).any()
# 0.0
pd.Series([False, False, '']).any()
# ''
pd.Series([False, '', '<-- the empty string is "falsy"']).any()
# '<-- the empty string is "falsy"'