Pandas 如何向现有DataFrame添加新列

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添加新列。具体的操作方法包括添加常量列、从其他列计算得到的列、从多个列计算得到的列、从条件判断得到的列,以及从自定义函数调用得到的列。熟练掌握这些操作可以使数据分析更加高效和方便。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程