Pandas 如何向现有DataFrame添加新列
在数据分析中,经常需要在DataFrame中添加新列以便于进一步数据处理和分析。Pandas提供了方便的方法来添加新列,本文将介绍具体的操作方法和示例。
阅读更多:Pandas 教程
创建一个示例DataFrame
为了能够更好地演示如何添加新列,我们首先需要创建一个示例DataFrame,代码如下:
import pandas as pd
data = {'name': ['Bob', 'Alice', 'John', 'Lily'],
'age': [23, 24, 25, 26],
'gender': ['M', 'F', 'M', 'F']}
df = pd.DataFrame(data)
print(df)
输出:
name age gender
0 Bob 23 M
1 Alice 24 F
2 John 25 M
3 Lily 26 F
这个DataFrame包含了4个人的姓名、年龄和性别信息。
添加一个常量列
添加一个常量列,即所有行的值都相同。比如,在DataFrame中添加一个名为“score”的列,其所有值都为50。操作方法如下:
df['score'] = 50
print(df)
输出:
name age gender score
0 Bob 23 M 50
1 Alice 24 F 50
2 John 25 M 50
3 Lily 26 F 50
添加一个从其他列计算得到的列
在数据分析中,经常需要根据已有的列计算得到新的列。以本文示例DataFrame为例,我们可以添加一个名为“adult”的列,其值为True或False,表示该人是否成年。操作如下:
df['adult'] = df['age'] >= 18
print(df)
输出:
name age gender score adult
0 Bob 23 M 50 True
1 Alice 24 F 50 True
2 John 25 M 50 True
3 Lily 26 F 50 True
这里用到了布尔运算符>=,返回的是一个布尔类型的Series。
添加一个从多个列计算得到的列
在实际应用中,经常需要根据多个列计算得到新的列。以本文中示例DataFrame为例,我们可以添加一个名为“gender_age”的列,其值为性别和年龄的组合。操作如下:
df['gender_age'] = df['gender'] + '_' + df['age'].astype(str)
print(df)
输出:
name age gender score adult gender_age
0 Bob 23 M 50 True M_23
1 Alice 24 F 50 True F_24
2 John 25 M 50 True M_25
3 Lily 26 F 50 True F_26
这里用到了Python中字符串的拼接操作,以及将整数类型的列转换为字符串类型的操作。
添加一个从条件判断得到的列
在实际应用中,经常需要根据条件判断得到新的列。以本文中示例DataFrame为例,我们可以添加一个名为“gender_age_class”的列,其值根据性别和年龄判断出年龄段。操作如下:
df['gender_age_class'] = pd.cut(df['age'], bins=[0, 18, 25, 100], labels=['<18', '18-25', '>25'])
df['gender_age_class'] = df['gender'] + '_' + df['gender_age_class']
print(df)
输出:
name age gender score adult gender_age gender_age_class
0 Bob 23 M 50 True M_23 M_18-25
1 Alice 24 F 50 True F_24 F_18-25
2 John 25 M 50 True M_25 M_18-25
3 Lily 26 F 50 True F_26 F_>25
这里用到了Pandas中的cut函数,将年龄划分为不同的区间,并将结果作为新的列添加到DataFrame中。
添加一个从函数调用得到的列
在实际应用中,经常需要根据自定义的函数调用得到新的列。以本文示例DataFrame为例,我们可以添加一个名为“capitalized_name”的列,其值为人名的首字母大写形式。操作如下:
def capitalize_name(name):
return name.capitalize()
df['capitalized_name'] = df['name'].apply(capitalize_name)
print(df)
输出:
name age gender score adult gender_age gender_age_class capitalized_name
0 Bob 23 M 50 True M_23 M_18-25 Bob
1 Alice 24 F 50 True F_24 F_18-25 Alice
2 John 25 M 50 True M_25 M_18-25 John
3 Lily 26 F 50 True F_26 F_>25 Lily
这里定义了一个自定义的函数capitalize_name,使用apply函数将其作用于“name”列,返回的结果作为“capitalized_name”列的值添加到DataFrame中。
总结
在本文中,我们介绍了Pandas中如何向现有DataFrame添加新列。具体的操作方法包括添加常量列、从其他列计算得到的列、从多个列计算得到的列、从条件判断得到的列,以及从自定义函数调用得到的列。熟练掌握这些操作可以使数据分析更加高效和方便。