当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python Pandas DataFrame any方法用法及代码示例


Pandas any(~) 方法扫描 DataFrame 的每一行或每一列,如果行/列包含至少一个非零值或布尔值 True ,则为该行/列返回 True

注意

在 Pandas 中。布尔值 True 相当于 1 ,而 False 相当于 0

参数

1.axis | intstring | optional

是否扫描源DataFrame的每一行或每一列:

说明

返回类型

0"index"

扫描每一列

Series

1"columns"

扫描每一行

Series

None

扫描整个DataFrame

Boolean

默认情况下,axis=0

2. bool_only | boolean | optional

  • 如果 True ,则仅扫描布尔列。

  • 如果 False ,则将扫描所有列。

默认情况下,bool_only=False

3. skipna | boolean | optional

  • 如果 TrueNaN 将被视为 False

  • 如果 False ,则 NaN 将被视为 True

默认情况下,skipna=True

4. level | intstring | optional

目标水平。仅当您的 DataFrame 是多索引时,这才有意义。

返回值

返回类型取决于axis

  • 如果 axis=None ,则返回单个布尔值。

  • 否则,返回一系列布尔值。

例子

考虑以下 DataFrame :

df = pd.DataFrame({"A":[2,0,1], "B":[1,0,0], "C":[0,0,0]})
df



   A  B  C
0  2  1  0
1  0  0  0
2  1  0  0

逐列扫描

按列扫描是否存在非零值:

df.any()   # or explicitly set axis=0



A     True
B     True
C    False
dtype: bool

在此,请注意以下事项:

  • AB 列中至少有一个非零值,因此为这些列返回 True

  • axis != None 以来,返回类型为 Series

逐行扫描

仅供您参考,我们再次在此显示df

df



   A  B  C
0  2  1  0
1  0  0  0
2  1  0  0

要按行扫描,请设置 axis=1 是否存在非零值:

df.any(axis=1)   # returns a Series



0     True
1    False
2     True
dtype: bool

扫描整个DataFrame

要扫描整个 DataFrame 是否存在非零值,请设置 axis=None

df.any(axis=None)



True

仅扫描布尔列

考虑以下 DataFrame :

df = pd.DataFrame({"A":[2,0], "B":[True,False], "C":[0,0]})
df



   A  B      C
0  2  True   0
1  0  False  0

要仅扫描包含布尔值的列,请设置 bool_only=True

df.any(bool_only=True)



B    True
dtype: bool

请注意如何仅考虑列 B,因为它是唯一类型为 boolean 的列。

考虑缺失值

默认情况下, skipna=True ,这意味着将跳过缺失值(视为 0False )。

作为示例,请考虑以下 DataFrame:

df = pd.DataFrame({"A": [pd.np.nan, 0]})
df



   A
0  NaN
1  0.0

调用 any() 给出:

df.any()    # or skipna=True



A    False
dtype: bool

在这里,我们得到 False ,因为跳过了 NaNA 列中的所有值都是 0

相反,设置 skipna=False 会将 NaN 视为 True

df.any(skipna=False)



A    True
dtype: bool

由于我们现在 A 列中至少有一个非零值,因此返回 True

相关用法


注:本文由纯净天空筛选整理自Isshin Inada大神的英文原创作品 Pandas DataFrame | any method。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。