在Pandas数据框架中添加新的变量

  • Post category:Python

当我们进行数据分析时,有时需要添加一些新的变量来辅助我们的分析。在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,以将函数应用于数据框架的每一行。