Pandas 按条件更新行值

Pandas 按条件更新行值

在本文中,我们将介绍如何使用Pandas库在DataFrame中按条件更新行值。

阅读更多:Pandas 教程

数据准备

我们先创建一个示例数据,包含姓名、年龄和性别三列。

import pandas as pd

data = {'Name': ['Tom', 'Lucy', 'Lucas', 'Maggie', 'Grace', 'John'], 
        'Age': [22, 35, 45, 18, 28, 50], 
        'Gender': ['M', 'F', 'M', 'F', 'F', 'M']}
df = pd.DataFrame(data)
print(df)

输出结果为:

     Name  Age Gender
0     Tom   22      M
1    Lucy   35      F
2   Lucas   45      M
3  Maggie   18      F
4   Grace   28      F
5    John   50      M

单个条件更新

如果我们想把年龄等于22岁的Tom的性别改为女性,可以使用以下代码:

df.loc[df['Name'] == 'Tom', 'Gender'] = 'F'
print(df)

此时的输出结果为:

     Name  Age Gender
0     Tom   22      F
1    Lucy   35      F
2   Lucas   45      M
3  Maggie   18      F
4   Grace   28      F
5    John   50      M

这里使用了loc方法选择行,并通过条件,定位到需要更新的行。在更新时,DataFrame中该位置的值被新值所替代。

多个条件更新

如果我们需要按照多个条件同时更新特定行的值,可以通过使用逻辑操作符&连接多个条件语句。

例如,我们希望将年龄大于30且性别为男性的人员姓名修改为John Smith,代码如下:

df.loc[(df['Age'] > 30) & (df['Gender'] == 'M'), 'Name'] = 'John Smith'
print(df)

输出结果为:

         Name  Age Gender
0         Tom   22      F
1        Lucy   35      F
2       Lucas   45      M
3      Maggie   18      F
4       Grace   28      F
5  John Smith   50      M

同样,我们在使用loc方法时仅选择年龄大于30,性别为男性的行,然后将这些行的姓名列更新为”John Smith”。

按函数更新

当需要按照特定条件改变数据值时,我们可以使用apply和一个函数来实现这一目的。

例如,我们将根据性别和年龄来更新符合条件的记录。如果性别是女性,并且年龄低于30岁,则将其年龄增加10岁,如果年龄已经大于等于30岁,则将其年龄增加5岁。

def add_age(row):
    if (row['Gender'] == 'F') and (row['Age'] < 30):
        row['Age'] += 10
    elif row['Age'] >= 30:
        row['Age'] += 5
    return row

df = df.apply(add_age, axis=1)
print(df)

输出结果为:

         Name  Age Gender
0         Tom   32      F
1        Lucy   40      F
2       Lucas   50      M
3      Maggie   28      F
4       Grace   38      F
5  John Smith   55      M

在这个例子中,我们使用了apply方法和一个自定义的函数来按照若干条件更新数据。函数接收一行数据,通过判断这行数据是否符合特定条件,来判断是否需要对该行数据进行更新。

总结

本文介绍了如何使用Pandas库来按照特定条件更新DataFrame中的行值。通过示例代码,我们展示了单个和多个条件、以及使用函数来更新数据行的操作流程。希望这篇文章对初学者能够有所帮助,掌握Pandas更新数据的基本方法,更好地处理和分析数据。

当然,Pandas提供了更为丰富的数据操作方法和函数,读者可以通过官方文档或者其他优秀的学习资源深入学习。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程