如何根据 Pandas 中的条件替换列中的值?
在本文中,我们将讨论在 pandas 中用条件替换数据集列中的值的各种方法。这可以通过许多方法来完成,让我们详细了解所有这些方法。
方法一:使用 dataframe.loc[]函数
使用此方法,我们可以使用条件或布尔数组访问一组行或列。如果我们可以访问它,我们也可以操纵这些值,是的!这是我们在 pandas 中使用 dataframe.loc[]函数的第一个方法,我们可以访问列并根据条件更改其值。
现在,我们将在性别列中将所有“男性”更改为 1。
Syntax: df.loc[ df[“column_name”] == “some_value”, “column_name”] = “value”
some_value = The value that needs to be replaced
value = The value that should be placed instead.
注意:您也可以使用其他运算符来构造更改数值的条件。
例子:
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。
syntax: df[“column_name”] = np.where(df[“column_name”]==”some_value”, value_if_true, value_if_false)
例子:
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。
syntax: df[‘column_name’].mask( df[‘column_name’] == ‘some_value’, value , inplace=True )
例子:
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)
输出: