pandas DataFrame mask的具体使用

 更新时间:2025年04月23日 11:24:41   作者:liuweidong0802  
pandas.DataFrame.mask方法提供了一种灵活的方式来根据条件筛选和替换 DataFrame中的元素,本文主要介绍了pandas DataFrame mask的具体使用,具有一定的参考价值,感兴趣的可以了解一下

Pandas2.2 DataFrame

Indexing, iteration

方法描述
DataFrame.head([n])用于返回 DataFrame 的前几行
DataFrame.at快速访问和修改 DataFrame 中单个值的方法
DataFrame.iat快速访问和修改 DataFrame 中单个值的方法
DataFrame.loc用于基于标签(行标签和列标签)来访问和修改 DataFrame 中的数据
DataFrame.iloc用于基于整数位置(行号和列号)来访问和修改 DataFrame 中的数据
DataFrame.insert(loc, column, value[, …])用于在 DataFrame 的指定位置插入一个新的列
DataFrame.iter()用于迭代 DataFrame 的列名
DataFrame.items()用于迭代 DataFrame 的列名和列数据
DataFrame.keys()返回 DataFrame 的列名
DataFrame.iterrows()用于逐行迭代 DataFrame
DataFrame.itertuples([index, name])用于逐行迭代 DataFrame
DataFrame.pop(item)用于从 DataFrame 中删除指定列
DataFrame.tail([n])用于返回 DataFrame 的最后 n 行
DataFrame.xs(key[, axis, level, drop_level])用于从 DataFrame 中提取一个横截面(cross-section)
DataFrame.get(key[, default])用于从 DataFrame 中获取指定列的数据
DataFrame.isin(values)用于检查 DataFrame 中的每个元素是否包含在指定的值集合中
DataFrame.where(cond[, other, inplace, …])用于根据条件筛选 DataFrame 中的元素
DataFrame.mask(cond[, other, inplace, axis, …])用于根据条件筛选 DataFrame 中的元素

pandas.DataFrame.mask()

pandas.DataFrame.mask(cond, other=<no_default>, *, inplace=False, axis=None, level=None) 方法用于根据条件筛选 DataFrame 中的元素。如果条件为 True,则用 other 参数指定的值替换该元素;如果条件为 False,则保留原值。

参数

  • cond:布尔条件,可以是布尔值、布尔数组、布尔 DataFrame 或布尔 Series。
  • other:可选参数,当条件为 True 时使用的值。默认为 NaN
  • inplace:布尔值,如果为 True,则直接在原 DataFrame 上进行修改,否则返回一个新的 DataFrame。默认为 False
  • axis:指定轴,0 或 'index' 表示按行,1 或 'columns' 表示按列。默认为 None
  • level:如果索引是多级索引,指定要使用的级别。默认为 None

返回值

  • 如果 inplace=False,返回一个新的 DataFrame。
  • 如果 inplace=True,返回 None

示例

假设我们有一个 DataFrame 如下:

import pandas as pd
import numpy as np

data = {
    'A': [1, 2, 3, 4],
    'B': [5, 6, 7, 8]
}

df = pd.DataFrame(data)
print("原始 DataFrame:")
print(df)

输出:

原始 DataFrame:
   A  B
0  1  5
1  2  6
2  3  7
3  4  8

示例 1:使用布尔条件替换值

将 A 列中大于 2 的值替换为 NaN

result = df.mask(df['A'] > 2)
print("\n将 A 列中大于 2 的值替换为 NaN:")
print(result)

输出:

将 A 列中大于 2 的值替换为 NaN:
     A    B
0  1.0  5.0
1  2.0  6.0
2  NaN  7.0
3  NaN  8.0

示例 2:使用布尔条件和自定义替换值

将 A 列中大于 2 的值替换为 0

result = df.mask(df['A'] > 2, other=0)
print("\n将 A 列中大于 2 的值替换为 0:")
print(result)

输出:

将 A 列中大于 2 的值替换为 0:
   A  B
0  1  5
1  2  6
2  0  7
3  0  8

示例 3:使用布尔 DataFrame 替换值

将 A 列中大于 2 的值替换为 NaNB 列中大于 6 的值替换为 NaN

cond = (df['A'] > 2) | (df['B'] > 6)
result = df.mask(cond)
print("\n将 A 列中大于 2 的值和 B 列中大于 6 的值替换为 NaN:")
print(result)

输出:

将 A 列中大于 2 的值和 B 列中大于 6 的值替换为 NaN:
     A    B
0  1.0  5.0
1  2.0  6.0
2  NaN  NaN
3  NaN  NaN

示例 4:使用 inplace=True 直接修改原 DataFrame

将 A 列中大于 2 的值替换为 0,直接修改原 DataFrame:

df.mask(df['A'] > 2, other=0, inplace=True)
print("\n直接修改原 DataFrame:")
print(df)

输出:

直接修改原 DataFrame:
   A  B
0  1  5
1  2  6
2  0  7
3  0  8

示例 5:使用多级索引

假设我们有一个多级索引的 DataFrame:

index = pd.MultiIndex.from_tuples([('a', 'x'), ('a', 'y'), ('b', 'x'), ('b', 'y')], names=['first', 'second'])
df = pd.DataFrame(data, index=index)
print("原始 DataFrame:")
print(df)

输出:

原始 DataFrame:
              A  B
first second       
a     x       1  5
      y       2  6
b     x       0  0
      y       0  0

使用 mask 方法并指定 level 参数:

result = df.mask(df['A'] > 2, level='first')
print("\n使用 mask 方法并指定 level 参数:")
print(result)

输出:

使用 mask 方法并指定 level 参数:
              A    B
first second       
a     x    1.0  5.0
      y    2.0  6.0
b     x    NaN  NaN
      y    NaN  NaN

总结

pandas.DataFrame.mask 方法提供了一种灵活的方式来根据条件筛选和替换 DataFrame 中的元素。你可以使用布尔条件、布尔数组或布尔 DataFrame 来指定哪些元素需要替换,哪些需要保留。通过 other 参数可以指定替换的值,默认为 NaNinplace 参数允许你选择是否直接修改原 DataFrame。这对于数据清洗和预处理非常有用。

到此这篇关于pandas DataFrame mask的具体使用的文章就介绍到这了,更多相关pandas DataFrame mask内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python中分布式框架Ray扩展的详细指南

    Python中分布式框架Ray扩展的详细指南

    Ray 是一个开源的分布式计算框架,专为扩展 Python 应用程序而设计,尤其在人工智能和机器学习领域表现出色,下面小编就为大家介绍一下关于 Python Ray 扩展的详细指南吧
    2025-06-06
  • Python参数传递的陷阱之从基础类型到类的深入探讨

    Python参数传递的陷阱之从基础类型到类的深入探讨

    本文详细探讨了Python参数传递机制,包括整数、列表、元组、字符串和字典等不同数据类型的传递行为,以及类定义中的参数传递陷阱,通过实际案例和最佳实践,帮助开发者避免参数传递相关的常见问题,编写出更加健壮和可靠的代码,感兴趣的朋友跟随小编一起看看吧
    2026-03-03
  • Python格式化字符串的四种常见方式

    Python格式化字符串的四种常见方式

    在 Python 编程中,格式化字符串是一项常见且重要的任务,Python 提供了多种格式化字符串的方式,每种方式都有其特点和适用场景,本文将详细介绍 Python 中格式化字符串的 4 种常见方式,需要的朋友可以参考下
    2025-04-04
  • Python 基于http.server模块实现简单http服务的代码举例

    Python 基于http.server模块实现简单http服务的代码举例

    Python http.server模块通过继承BaseHTTPRequestHandler处理HTTP请求,使用ThreadingHTTPServer支持多线程,将其他类实例设为RequestHandler属性实现跨服务调用,本文给大家介绍Python 基于http.server模块实现简单http服务的代码举例,感兴趣的朋友跟随小编一起看看吧
    2025-08-08
  • python实现对arxml文件的操作方法

    python实现对arxml文件的操作方法

    本篇文章给大家介绍python实现对arxml文件的操作方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2023-12-12
  • Python实现将Excel转换成xml的方法示例

    Python实现将Excel转换成xml的方法示例

    这篇文章主要介绍了Python实现将Excel转换成xml的方法,涉及Python针对Excel文件的读取、遍历、节点设置与xml生成等相关操作技巧,需要的朋友可以参考下
    2018-08-08
  • Django中QuerySet查询优化之prefetch_related详解

    Django中QuerySet查询优化之prefetch_related详解

    prefetch_related()和select_related()的设计目的很相似,都是为了减少SQL查询的数量,但是实现的方式不一样,下面这篇文章主要给大家介绍了关于Django中QuerySet查询优化之prefetch_related的相关资料,需要的朋友可以参考下
    2022-11-11
  • python文件读写代码实例

    python文件读写代码实例

    这篇文章主要介绍了python文件读写代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • Python+OpenCV实现图像识别替换功能详解

    Python+OpenCV实现图像识别替换功能详解

    OpenCV-Python是一个Python库,旨在解决计算机视觉问题。本文将利用Python+OpenCV实现图像识别替换功能,感兴趣的小伙伴可以动手尝试一下
    2022-07-07
  • Python 读取.dat 文件的实现

    Python 读取.dat 文件的实现

    这篇文章主要介绍了Python 读取.dat 文件的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04

最新评论