📜  Python|熊猫 dataframe.mask()(1)

📅  最后修改于: 2023-12-03 15:04:26.722000             🧑  作者: Mango

Python | 熊猫 DataFrame.mask()

简介

DataFrame.mask() 是 Pandas 库中 DataFrame 类的一种方法,可以用于将 DataFrame 中满足指定条件的元素替换为指定值。该方法的作用类似于 DataFrame 中的布尔索引,但是可以直接替换匹配的元素,而无需通过布尔索引进行选取和修改。

语法
DataFrame.mask(cond, other=nan, inplace=False, axis=None, level=None, errors='raise', try_cast=False)
  • cond:指定的条件,可以是一个函数(函数返回值是处理后的值)或布尔型数组(相同长度的 DataFrame 或 Series)。该条件会作用于整个 DataFrame 或选定的列。如果该参数是函数,则该函数应该从输入值中返回应该将该值替换为的新值,否则将应用 other 参数中的值替换。
  • other:指定替换条件不满足的值。如果该参数是一个 DataFrame,则替换失败的元素将根据该 DataFrame 进行替换。如果该参数是一个标量,则替换失败的元素将根据该标量进行替换。默认为 nan
  • inplace:指示是否原地替换 DataFrame,而不是返回新的 DataFrame。默认为 False
  • axis:指定应用条件的轴。可以是 0 或 1。
  • level:指定要在哪个多层次索引级别上处理数据。
  • errors:指定对包含无效值的组的处理方式。可以设置为 'raise'(默认值,引发异常)、 'ignore'(跳过该组)或 'coerce'(尝试将无效值转换为 NaN 值)。
  • try_cast:指示是否尝试将替换结果强制转换为源 DataFrame 的数据类型。默认为 False
示例
1. 根据条件替换 DataFrame 中符合条件的元素
import pandas as pd

data = {'name': ['Alice', 'Bill', 'Cathy', 'David', 'Eva'],
        'age': [25, 32, 18, 45, 27],
        'gender': ['F', 'M', 'F', 'M', 'F'],
        'income': [6800, 7400, 5500, 3700, 4900]}
df = pd.DataFrame(data)

# 将 age 列中小于 20 的元素替换为 20
df_new = df.mask(df['age'] < 20, 20)
print(df_new)

输出结果:

    name  age gender  income
0  Alice   25      F    6800
1   Bill   32      M    7400
2  Cathy   20      F    5500
3  David   45      M    3700
4    Eva   27      F    4900
2. 根据条件替换某一列中符合条件的元素
# 将 income 列中大于 5000 的元素替换为 5000
df_masked = df.mask(df['income'] > 5000, other=5000, inplace=False, axis=0, level=None, errors='raise', try_cast=False)
print(df_masked)

输出结果:

    name  age gender  income
0  Alice   25      F    5000
1   Bill   32      M    5000
2  Cathy   18      F    5000
3  David   45      M    3700
4    Eva   27      F    4900
3. 根据函数替换符合条件的元素
# 将 age 列中的奇数值替换为 0
df_func = df.mask(lambda x: x % 2 != 0, 0)
print(df_func)

输出结果:

    name  age gender  income
0  Alice    0      F    6800
1   Bill   32      M       0
2  Cathy    0      F    5500
3  David   0      M       0
4    Eva    0      F    4900
总结
  • DataFrame.mask() 方法是 Pandas 对 DataFrame 类的一种扩展,功能类似于布尔索引。
  • 可以使用 mask() 方法根据自定义条件快速替换匹配的元素。
  • 该方法支持使用函数指定条件,并支持在不匹配条件时使用指定的默认值。
  • 通过修改参数 inplacetry_cast,可以控制 DataFrame 的替换方式以及结果的数据类型。