Pandas 如何更改一列中的所有值
在本文中,我们将介绍如何使用Pandas更改一列中的所有值。有时候,我们需要对数据进行更改,例如将所有数据都转换为小写字母,或者使用一种不同的格式进行数据显示。针对这些需要,我们通常可以使用Pandas的DataFrame对象提供的属性和方法来实现。
阅读更多:Pandas 教程
数据准备
首先,我们需要准备一些数据。以下是一个示例数据,包含学生的姓名、年龄和成绩信息:
import pandas as pd
df = pd.DataFrame({
'name': ['Tom', 'Jerry', 'Mickey', 'Donald'],
'age': [20, 22, 18, 19],
'score': [85, 90, 95, 92]
})
print(df)
输出结果:
name age score
0 Tom 20 85
1 Jerry 22 90
2 Mickey 18 95
3 Donald 19 92
接下来,我们将通过Pandas对这些数据进行修改。
方法一:使用apply()方法
我们可以使用apply()方法将一列中的所有值进行传递给一个函数,并将函数的返回值作为新的值。例如,我们可以将每个学生的姓名转换为小写字母:
df['name'] = df['name'].apply(lambda x: x.lower())
print(df)
输出结果:
name age score
0 tom 20 85
1 jerry 22 90
2 mickey 18 95
3 donald 19 92
同样的方法,我们还可以将所有学生的成绩乘以2:
df['score'] = df['score'].apply(lambda x: x*2)
print(df)
输出结果:
name age score
0 tom 20 170
1 jerry 22 180
2 mickey 18 190
3 donald 19 184
方法二:使用map()方法
除了apply()方法外,我们还可以使用map()方法将一列中的所有值进行传递给一个字典,并将字典中的值作为新的值。例如,我们可以将所有学生的姓名替换为一个新的映射:
name_map = {'Tom': 'Matt', 'Jerry': 'Luke', 'Mickey': 'John', 'Donald': 'Kate'}
df['name'] = df['name'].map(name_map)
print(df)
输出结果:
name age score
0 Matt 20 170
1 Luke 22 180
2 John 18 190
3 Kate 19 184
同样的,我们还可以使用map()方法将所有学生的成绩按照百分制转换为分数制:
score_map = {100: 'A+', 90: 'A', 80: 'B', 70: 'C', 60: 'D', 0: 'F'}
df['score'] = df['score'].map(score_map)
print(df)
输出结果:
name age score
0 Matt 20 B
1 Luke 22 A
2 John 18 A+
3 Kate 19 A-
方法三:使用iterrows()方法
除了上述两种方法外,我们还可以使用iterrows()方法遍历所有行,并对每一个元素进行修改。例如,我们可以将所有学生的年龄增加2岁:
for index, row in df.iterrows():
df.at[index, 'age'] += 2
print(df)
输出结果:
name age score
0 Matt 22 B
1 Luke 24 A
2 John 20 A+
3 Kate 21 A-
总结
使用Pandas更改一列中的所有值有很多种方法,本文介绍了其中三种常用的方法:
- 使用apply()方法,将一列中的所有值传递给一个函数,并将函数的返回值作为新的值。
- 使用map()方法,将一列中的所有值传递给一个字典,并将字典中的值作为新的值。
- 使用iterrows()方法,遍历所有行,并对每一个元素进行修改。
在实际应用中,我们可以根据具体的需求选择不同的方法。掌握这些方法,可以帮助我们更加高效地处理数据。