📜  Python| Pandas DataFrame.where()(1)

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

Python | Pandas DataFrame.where()

Pandas是一种高效且易于使用的数据处理工具,其中DataFrame是最常用的数据结构之一。Pandas DataFrame.where()方法允许用户按条件将DataFrame中的元素替换为其他值。

语法
DataFrame.where(cond, other=nan, inplace=False, axis=None, level=None, errors='raise', try_cast=False)

参数说明:

  • cond:将DataFrame替换为其他值的条件,可以是一个布尔型数组/序列、DataFrame、Series或可调用函数
  • other:用于替换DataFrame中不符合条件的元素的值,默认为NaN
  • inplace:在原地进行操作,如果为True,则替换原来的DataFrame,否则会生成一个新的DataFrame
  • axis:指定按行(0)或按列(1)的索引进行操作,默认为None,代表按行进行操作
  • level:如果DataFrame是层次化索引,则该参数指定要操作的索引级别
  • errors:如何处理传递给cond的可调用函数中的错误(如果存在),'raise'表示抛出异常,'ignore'表示忽略该错误并返回一个布尔型DataFrame,此时所有不符合条件的元素都会被替换为False
  • try_cast:在修改元素时尝试进行强类型转换
示例
import pandas as pd

data = {'name': ['George', 'Tim', 'John', 'Lucas'],
        'age': [25, 30, 22, 19],
        'gender': ['M', 'M', 'M', 'M']}

df = pd.DataFrame(data)

df

| | name | age | gender | |---:|:------|:------|:---------| | 0 | George | 25 | M | | 1 | Tim | 30 | M | | 2 | John | 22 | M | | 3 | Lucas | 19 | M |

# 将所有大于等于25岁的人的性别替换为F
df.where(df['age'] >= 25, other='M', inplace=True)
df

| | name | age | gender | |---:|:------|:------|:---------| | 0 | George | 25 | M | | 1 | M | M | M | | 2 | M | 22 | M | | 3 | M | 19 | M |

在上面的示例中,我们使用where()方法将DataFrame中年龄大于等于25岁的人的性别替换为F。我们传递了两个参数给where()方法,第一个参数是一个条件表达式,它返回一个布尔值的DataFrame。第二个参数是用于替换不符合条件的值的替换值,我们将其设置为F。inplace=True表示原地修改原始DataFrame。

总结

Pandas DataFrame.where() 方法是一种强大的方式,用于根据条件替换DataFrame中的值。该方法使用灵活,支持许多参数。默认情况下,所有不符合条件的元素都会被替换为NaN,但是我们可以通过传递其他替换值来自定义此行为。需要注意的是,如果要对原始DataFrame进行修改,需要将inplace参数设置为True。