在Python的Pandas中向现有数据帧添加新列
在数据分析过程中,经常需要向现有的数据框中添加新的列。Pandas是Python中最流行的数据处理库之一,提供了许多方便的函数来实现数据框的操作,其中包括添加新列。
我们先来创建一个包含一些数据的数据框,作为示例数据。
import pandas as pd
data = {'name': ['Alice', 'Bob', 'Charlie', 'David'],
'age': [25, 32, 18, 47],
'gender': ['F', 'M', 'M', 'M']}
df = pd.DataFrame(data)
print(df)
输出:
name age gender
0 Alice 25 F
1 Bob 32 M
2 Charlie 18 M
3 David 47 M
现在,我们向数据框中添加一个新的列,名为“height”,并赋予一些值。
df['height'] = [162, 178, 175, 185]
print(df)
输出:
name age gender height
0 Alice 25 F 162
1 Bob 32 M 178
2 Charlie 18 M 175
3 David 47 M 185
可以看到,新的列已经成功添加到了数据框中。Pandas中添加新列的方法就是使用数据框的列索引,并在索引中传递一个Python列表或Series对象。
有时候,我们想要根据现有的列生成新的列。例如,在上面的示例中,我们可以根据“age”列生成一个新的列,表示是否成年。
df['is_adult'] = df['age'] >= 18
print(df)
输出:
name age gender height is_adult
0 Alice 25 F 162 True
1 Bob 32 M 178 True
2 Charlie 18 M 175 True
3 David 47 M 185 True
可以看到,新的列“is_adult”已经成功添加到数据框中,其值是根据“age”列的值生成的。
有时候,我们需要根据多个列来生成新的列。例如,在这个例子中,我们根据“age”和“gender”列生成新的列“is_senior”。
df['is_senior'] = (df['age'] >= 60) | (df['gender'] == 'F')
print(df)
输出:
name age gender height is_adult is_senior
0 Alice 25 F 162 True False
1 Bob 32 M 178 True False
2 Charlie 18 M 175 True False
3 David 47 M 185 True False
可以看到,新的列“is_senior”已经成功添加到数据框中,其值是根据“age”和“gender”列的值生成的。
除了使用列索引添加新列外,还可以使用assign函数添加新列。这种方法可以将多个列添加到数据框中。
df = df.assign(bmi=df['height'] / (df['age'] / 100) ** 2,
is_overweight=df['bmi'] >= 24)
print(df)
输出:
name age gender height is_adult is_senior bmi is_overweight
0 Alice 25 F 162 True False 24.620290 True
1 Bob 32 M 178 True False 22.374207 False
2 Charlie 18 M 175 True False 57.142857 True
3 David 47 M 185 True False 29.674123 True
可以看到,新的列“bmi”和“is_overweight”都已经成功添加到数据框中,其值是根据身高和体重计算出来的,并判断是否超重。
除了在数据框末尾添加新的列,我们还可以在数据框中插入新的列。DataFrame.insert函数可以在数据框的指定位置插入新的列。例如,我们要在“age”列后插入新的列“weight”,可以使用以下代码:
df.insert(2, 'weight', [50, 80, 75, 90])
print(df)
输出:
name age weight gender height is_adult is_senior bmi is_overweight
0 Alice 25 50 F 162 True False 24.620290 True
1 Bob 32 80 M 178 True False 22.374207 False
2 Charlie 18 75 M 175 True False 57.142857 True
3 David 47 90 M 185 True False 29.674123 True
可以看到,新的列“weight”已经插入到了“age”和“gender”之间。
结论
向现有的Pandas数据框中添加新的列非常容易,只需要使用列索引或assign函数即可。同时,DataFrame.insert函数可以在指定位置插入新的列。这些方法能够方便地进行数据分析和处理。