Python pandas.DataFrame.any函数方法的使用

pandas.DataFrame.any 方法用于检查 DataFrame 中是否有任何值满足特定条件。它可以沿着指定轴检查,返回布尔值或布尔值 Series。本文主要介绍一下Pandas中pandas.DataFrame.any方法的使用。

DataFrame.any(axis=0, bool_only=None, skipna=True, level=None, **kwargs)                                              [source]

返回任何元素是否为真(可能在轴上)。

返回False,除非在一个series中或沿着Dataframe轴至少有一个元素为真或等效(例如,非零或非空)。

参数:

axis : {0 或 ‘index’, 1 或 ‘columns’, None}, 

默认 0

指出哪个axis或哪个axis应该减少

0 / ‘index’ : 减少索引,

返回索引为原始列标签的Series。

1 / ‘columns’ : 减少列,

返回一个索引为原始索引的Series。

None:减少所有轴,返回一个标量。

bool_only : bool, 默认 None

只包含布尔列。如果没有,

将尝试使用一切,

然后只使用布尔数据。

不适用于Series。

skipna : bool, 默认 True

排除NA/null值。

如果整个行/列为NA

并且skipna为True

那么结果将为False

对于空行/列也是如此。

如果skipna是False

那么NA就被当作True

因为它们不等于零。

level : int 或 level name, 

默认 None

如果轴是一个多索引(层次结构),

则沿着特定的级别进行计数,

并折叠成一个Series。

**kwargs : any, 默认 None

附加关键字没有效果,但是可以接受与NumPy兼容。

返回:

Series 或 DataFrame

如果指定了level,则返回DataFrame;否则,返回Series。

例如

1)基本用法

import pandas as pd
import numpy as np

# 创建示例 DataFrame
df = pd.DataFrame({
    'A': [1, 2, 3, 0],
    'B': [0, 0, 0, 0],
    'C': [np.nan, np.nan, 3, 4]
})

# 检查每列是否有任何非零值
print(df.any())

2)沿行方向检查

import pandas as pd
import numpy as np

# 创建示例 DataFrame
df = pd.DataFrame({
    'A': [1, 2, 3, 0],
    'B': [0, 0, 0, 0],
    'C': [np.nan, np.nan, 3, 4]
})

# 检查每行是否有任何非零值
print(df.any(axis=1))

3)忽略缺失值

import pandas as pd
import numpy as np

# 创建示例 DataFrame
df = pd.DataFrame({
    'A': [1, 2, 3, 0],
    'B': [0, 0, 0, 0],
    'C': [np.nan, np.nan, 3, 4]
})

# 检查每列是否有任何非零值,忽略缺失值
print(df.any(skipna=True))

4)仅检查布尔类型列

import pandas as pd
import numpy as np

# 创建示例 DataFrame
df = pd.DataFrame({
    'A': [1, 2, 3, 0],
    'B': [0, 0, 0, 0],
    'C': [np.nan, np.nan, 3, 4]
})

# 创建包含布尔类型的 DataFrame
df_bool = pd.DataFrame({
    'A': [True, False, True],
    'B': [False, False, False],
    'C': [True, True, False]
})

# 检查每列是否有任何 True 值
print(df_bool.any(bool_only=True))

5)多级索引

import pandas as pd
import numpy as np

# 创建示例 DataFrame
df = pd.DataFrame({
    'A': [1, 2, 3, 0],
    'B': [0, 0, 0, 0],
    'C': [np.nan, np.nan, 3, 4]
})

# 创建多级索引 DataFrame
df_multi = pd.DataFrame({
    'A': [1, 2, 3, 0],
    'B': [0, 0, 0, 0],
    'C': [np.nan, np.nan, 3, 4]
}, index=pd.MultiIndex.from_tuples([
    ('x', 'one'), ('x', 'two'), ('y', 'one'), ('y', 'two')
]))

# 检查沿级别 0 是否有任何非零值
print(df.groupby(level=0).any())

6)Series 使用示例

对于Series输入,输出是一个标量,指示任何元素是否为True。

import pandas as pd
import numpy as np

# 示例1: 全部元素为 False
series1 = pd.Series([False, False])
print(series1.any())
# 输出: False

# 示例2: 存在 True 元素
series2 = pd.Series([True, False])
print(series2.any())
# 输出: True

# 示例3: 空 Series
series3 = pd.Series([], dtype=bool)
print(series3.any())
# 输出: False

# 示例4: 含有 NaN 的 Series
series4 = pd.Series([np.nan])
print(series4.any())
# 输出: False

# 示例5: 含有 NaN 的 Series,skipna=False
print(series4.any(skipna=False))
# 输出: True

7)DataFrame 使用示例

import pandas as pd
import numpy as np

# 创建第一个示例 DataFrame
df1 = pd.DataFrame({"A": [1, 2], "B": [0, 2], "C": [0, 0]})
print("DataFrame 1:")
print(df1)
print("\n每列是否至少包含一个True元素:")
print(df1.any())
print("\n")

# 创建第二个示例 DataFrame
df2 = pd.DataFrame({"A": [True, False], "B": [1, 2]})
print("DataFrame 2:")
print(df2)
print("\n对列进行聚合:")
print(df2.any(axis='columns'))
print("\n")

# 创建第三个示例 DataFrame
df3 = pd.DataFrame({"A": [True, False], "B": [1, 0]})
print("DataFrame 3:")
print(df3)
print("\n对列进行聚合:")
print(df3.any(axis='columns'))
print("\n")

# 使用axis=None聚合整个DataFrame
print("DataFrame 3的整体聚合:")
print(df3.any(axis=None))
print("\n")

# 空 DataFrame 的 any 是空的 Series
empty_df = pd.DataFrame([])
print("空 DataFrame:")
print(empty_df)
print("\n空 DataFrame 的 any:")
print(empty_df.any())

推荐阅读
cjavapy编程之路首页