📜  如何根据 Pandas 中的条件替换列中的值?

📅  最后修改于: 2022-05-13 01:55:38.398000             🧑  作者: Mango

如何根据 Pandas 中的条件替换列中的值?

在本文中,我们将讨论在 pandas 中用条件替换数据集列中的值的各种方法。这可以通过许多方法来完成,让我们详细了解所有这些方法。

方法一:使用 dataframe.loc[]函数

使用此方法,我们可以使用条件或布尔数组访问一组行或列。如果我们可以访问它,我们也可以操纵这些值,是的!这是我们在 pandas 中使用 dataframe.loc[]函数的第一个方法,我们可以访问列并根据条件更改其值。

现在,我们将在性别列中将所有“男性”更改为 1。

注意:您也可以使用其他运算符来构造更改数值的条件。

例子:

Python3
# Importing the libraries
import pandas as pd
import numpy as np
  
# data
Student = {
    'Name': ['John', 'Jay', 'sachin', 'Geetha', 'Amutha', 'ganesh'],
    'gender': ['male', 'male', 'male', 'female', 'female', 'male'],
    'math score': [50, 100, 70, 80, 75, 40],
    'test preparation': ['none', 'completed', 'none', 'completed',
                         'completed', 'none'],
}
  
# creating a Dataframe object
df = pd.DataFrame(Student)
  
# Applying the condition
df.loc[df["gender"] == "male", "gender"] = 1


Python3
# Importing the libraries
import pandas as pd
import numpy as np
  
# data
student = {
    'Name': ['John', 'Jay', 'sachin', 'Geetha', 'Amutha', 'ganesh'],
    'gender': ['male', 'male', 'male', 'female', 'female', 'male'],
    'math score': [50, 100, 70, 80, 75, 40],
    'test preparation': ['none', 'completed', 'none', 'completed',
                         'completed', 'none'],
}
  
# creating a Dataframe object
df = pd.DataFrame(student)
  
  
# Applying the condition
df["gender"] = np.where(df["gender"] == "female", 0, 1)


Python3
# Importing the libraries
import pandas as pd
import numpy as np
  
# data
student = {
    'Name': ['John', 'Jay', 'sachin', 'Geetha', 'Amutha', 'ganesh'],
    'gender': ['male', 'male', 'male', 'female', 'female', 'male'],
    'math score': [50, 100, 70, 80, 75, 40],
    'test preparation': ['none', 'completed', 'none', 'completed', 
                         'completed', 'none'],
}
  
# creating a Dataframe object
df = pd.DataFrame(student)
  
# Applying the condition
df['gender'].mask(df['gender'] == 'female', 0, inplace=True)
  
# Try this too
#df['math score'].mask(df['math score'] >=60 ,'good', inplace=True)


输出:

方法二:使用 NumPy.where()函数

我们将看到的另一种方法是使用 NumPy 库。 NumPy 是一个非常流行的库,用于计算 2d 和 3d 数组。它为我们提供了一个非常有用的方法 where() 来访问带有条件的特定行或列。我们还可以使用此函数来更改列的特定值。

这个 numpy.where()函数应该写有条件,如果条件为真,则后跟值,如果条件为假,则为值。现在,我们将在性别列中将所有“女性”更改为 0,将“男性”更改为 1。

例子:

Python3

# Importing the libraries
import pandas as pd
import numpy as np
  
# data
student = {
    'Name': ['John', 'Jay', 'sachin', 'Geetha', 'Amutha', 'ganesh'],
    'gender': ['male', 'male', 'male', 'female', 'female', 'male'],
    'math score': [50, 100, 70, 80, 75, 40],
    'test preparation': ['none', 'completed', 'none', 'completed',
                         'completed', 'none'],
}
  
# creating a Dataframe object
df = pd.DataFrame(student)
  
  
# Applying the condition
df["gender"] = np.where(df["gender"] == "female", 0, 1)

输出:

方法三:使用 pandas 掩码函数

Pandas 屏蔽函数用于用条件替换任何行或列的值。现在使用这个掩蔽条件,我们将在性别列中将所有“女性”更改为 0。

例子:

Python3

# Importing the libraries
import pandas as pd
import numpy as np
  
# data
student = {
    'Name': ['John', 'Jay', 'sachin', 'Geetha', 'Amutha', 'ganesh'],
    'gender': ['male', 'male', 'male', 'female', 'female', 'male'],
    'math score': [50, 100, 70, 80, 75, 40],
    'test preparation': ['none', 'completed', 'none', 'completed', 
                         'completed', 'none'],
}
  
# creating a Dataframe object
df = pd.DataFrame(student)
  
# Applying the condition
df['gender'].mask(df['gender'] == 'female', 0, inplace=True)
  
# Try this too
#df['math score'].mask(df['math score'] >=60 ,'good', inplace=True)

输出: