Pandas 如何根据某一列的值,设置另一列的值

您所在的位置:网站首页 两列表格相加得到另一列怎么做 Pandas 如何根据某一列的值,设置另一列的值

Pandas 如何根据某一列的值,设置另一列的值

2024-07-15 12:11| 来源: 网络整理| 查看: 265

Pandas 如何根据某一列的值,设置另一列的值

在本文中,我们将介绍Pandas如何通过一个DataFrame中某一列的值,改变该DataFrame中另一列的值。这种操作通常被称为“根据条件设置”或“根据筛选条件设置”。

阅读更多:Pandas 教程

Pandas中的.loc()方法

对于大多数Pandas用户来说,最简单的方法是使用.loc()方法。.loc()方法可以执行多种选择和设置操作,其中之一就是设置一个条件,并使用这个条件来设定新值。具体来说,我们可以创建一个条件,选择一个子集,然后使用.loc()方法对其赋值。

考虑以下示例数据:

import pandas as pd df = pd.DataFrame({'name': ['John', 'Alice', 'Bob', 'Jane'], 'score': [78, 92, 54, 83], 'grade': ['B', 'A', 'F', 'B']})

这是一个具有三个列的DataFrame:一个是学生的姓名,一个是他们的得分,另一个是他们的成绩。我们可以使用.loc()方法来根据他们的成绩选择学生,并将他们的得分替换为新值。例如,在下面的代码中,我们将所有得分为“B”的学生得分替换为100:

df.loc[df['grade'] == 'B', 'score'] = 100 print(df)

输出结果如下:

name score grade 0 John 100 B 1 Alice 92 A 2 Bob 54 F 3 Jane 100 B

在上述代码中,我们检查每行的“grade”列是否等于“B”,然后将“score”列的值设置为100。由于这是一个条件式,我们可以使用它来对DataFrame中的多个行进行设置。

Pandas中的np.where()方法

另一种选择和设置操作的方便方法是使用numpy中的where()函数。where()函数接受一个条件和两个数组,一个是条件为真时使用的值的数组,另一个是条件为假时使用的值的数组。Pandas中的.apply()方法可用于将该函数应用于每一行。

具体来说,我们可以在下面的代码中使用where()函数来选择列“score”,并将分数为“B”的学生分数重置为100:

import numpy as np df['score'] = np.where(df['grade'] == 'B', 100, df['score']) print(df)

运行上述代码,我们将获得和之前相同的输出:

name score grade 0 John 100 B 1 Alice 92 A 2 Bob 54 F 3 Jane 100 B Pandas中的map()和replace()方法

map()和replace()方法都用于将一个值映射到在DataFrame中一个或多个新值。replace()方法更适用于简单的替换,在DataFrame中可以将一个值替换为另一个值。然而,当我们需要进行更复杂的映射时,map()方法更常用。

考虑以下示例代码,我们使用map()方法将“score”列中大于等于90分的学生成绩映射为“A”,80到89分之间的映射为“B”,小于80分的映射为“C”:

def grade_mapping(score): if score >= 90: return 'A' elif score >= 80: return 'B' else: return 'C' df['grade'] = df['score'].map(grade_mapping) print(df)

输出结果如下:

name score grade 0 John 100 A 1 Alice 92 A 2 Bob 54 C 3 Jane 100 A

在上述代码中,我们通过定义一个grade_mapping()函数并将其应用到.map()方法来将“score”列的值映射为新的“grade”列。这个函数被应用于每个值,并生成相应的映射值。

另一方面,如果我们只需要对一个特定值进行简单的替换,那么可以使用.replace()方法。例如,我们可以将分数为“B”的学生的分数替换为0:

df['score'].replace(100, 0, inplace=True) print(df)

在这个例子中,我们只是将得分为100的学生替换为0。注意,我们必须将inplace参数设置为True,以便在原始DataFrame中进行替换。

Pandas中的多个条件选择

如果我们需要根据多个条件来选择并设置,则可以使用Pandas中的括号和&和|运算符。例如,如果我们要选择“grade”为“B”且“score”大于90分的学生并将其得分重置为100,则可以使用以下代码:

df.loc[(df['grade'] == 'B') & (df['score'] > 90), 'score'] = 100 print(df)

运行这段代码后,输出结果为:

name score grade 0 John 0 A 1 Alice 92 A 2 Bob 54 C 3 Jane 0 A

在上述代码中,我们使用“&”运算符来结合多个条件,其中必须同时成立。我们使用“|”运算符来选择符合其中一个条件的学生。

总结

Pandas提供了许多不同的方法来根据一个DataFrame的某一列值来设定另一列的值。其中一些方法包括.loc()、np.where()、map()和replace()方法以及条件运算符。每个方法都有其自己的适用情况,因此熟悉每种方法是非常重要的。根据需要选用合适的方法,可以使我们更方便地根据特定条件进行选择和设定。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3