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提供了更为丰富的数据操作方法和函数,读者可以通过官方文档或者其他优秀的学习资源深入学习。
极客笔记