当我们进行数据分析时,有时需要添加一些新的变量来辅助我们的分析。在Pandas数据框架中,添加新的变量可以通过多种方式实现,其中最常用的方法是使用assign()方法和apply()方法。
使用assign()方法添加新变量
使用assign()方法可以在原始数据框架中添加新的列,可以应用于基本计算、函数和其他数据框架列。
例如,在以下数据框架中,我们要添加一个新的列total,计算每条记录的“score1”和“score2”的总和。
name score1 score2
0 Tom 50 78
1 Bob 80 95
2 Mary 66 82
代码如下:
import pandas as pd
df = pd.DataFrame({'name': ['Tom', 'Bob', 'Mary'], 'score1': [50, 80, 66], 'score2': [78, 95, 82]})
df = df.assign(total = df['score1'] + df['score2'])
print(df)
输出结果为:
name score1 score2 total
0 Tom 50 78 128
1 Bob 80 95 175
2 Mary 66 82 148
使用apply()方法添加新变量
另一个常用的方法是使用apply()方法,它可以用于将函数应用到整个数据框架或某些列。
例如,我们想要添加一个新的列“grade”,根据每个分数的大小将每个人的成绩分为A,B和C。我们可以定义一个函数,并将其应用到数据框架的每个数据行。
代码如下:
import pandas as pd
df = pd.DataFrame({'name': ['Tom', 'Bob', 'Mary'], 'score1': [50, 80, 66], 'score2': [78, 95, 82]})
def get_grade(score):
if score >= 90:
grade = 'A'
elif score >= 70:
grade = 'B'
else:
grade = 'C'
return grade
df['grade'] = df.apply(lambda row: get_grade(row['score1']) + get_grade(row['score2']), axis=1)
print(df)
输出结果为:
name score1 score2 grade
0 Tom 50 78 CC
1 Bob 80 95 AB
2 Mary 66 82 CB
在上述代码中,我们定义了一个名为get_grade的函数,以计算每个分数的成绩,并使用apply()方法将其应用于整个数据框架的每一行。计算结果赋值给“grade”列。
这里需要注意的是,apply()方法中的lambda函数需要使用axis参数指定为1,以将函数应用于数据框架的每一行。