Python Pandas数据框架中创建新列
Pandas 是 Python 中一个非常有用的数据分析库。DataFrame 是 Pandas 中最常用的数据类型之一,在数据分析的过程中我们经常需要对 DataFrame 中已有的数据进行加工处理。其中的一种处理方式是创建新的列,而这也是我们本篇文章的主要讨论内容。
更多Pandas相关文章,请阅读:Pandas 教程
DataFrame 介绍
在 Pandas 中,DataFrame 是将数据存储在二维表中的主要数据类型,它由三个基本组成部分构成:行、列和值。DataFrame 也可以看作是 Series 对象的容器,其中每一列的值类型可以不同。
在本文中,我们将学习如何在一个 Pandas 的 DataFrame 中创建新的列并存入数据。
创建新列
创建新列有多种不同的方法,将会在下面进行介绍。
方法一:直接指定列名后赋值
下面的代码演示如何直接指定列名后赋值:
import pandas as pd
data = {'name': ['John', 'Mary', 'Tom'],
'age': [25, 26, 27],
'country': ['US', 'CN', 'JP']}
df = pd.DataFrame(data)
df['gender'] = ['male', 'female', 'male']
在上面的代码中,我们创建了一个 DataFrame,并使用 df['gender']
直接指定了新的列名。这时,DataFrame 中将出现一个名为 gender
的新列,它的值分别为 'male'
,'female'
,和 'male'
。
方法二:使用 apply() 函数
下面的代码演示如何使用 apply() 函数创建新列:
import pandas as pd
data = {'name': ['John', 'Mary', 'Tom'],
'age': [25, 26, 27],
'country': ['US', 'CN', 'JP']}
df = pd.DataFrame(data)
df['name_length'] = df['name'].apply(lambda x: len(x))
在上面的代码中,我们使用 apply() 函数创建了新列 name_length
,它的值为姓名 name
字符串的长度。这里使用的是 lambda 函数。我们也可以使用现成的函数。
方法三:使用 eval() 函数
下面的代码演示如何使用 eval() 函数创建新列:
import pandas as pd
data = {'name': ['John', 'Mary', 'Tom'],
'age': [25, 26, 27],
'country': ['US', 'CN', 'JP']}
df = pd.DataFrame(data)
df.eval('age_plus_10 = age + 10', inplace=True)
请注意,我们在这里通过参数 inplace=True
来保证在原地修改 DataFrame,age_plus_10
列的值是原始列值加 10 。其他表达式也可以被用作一个字符串参数。
方法四:通过 map() 函数创建
下面的代码演示如何使用 map() 函数创建新列:
import pandas as pd
data = {'name': ['John', 'Mary', 'Tom'],
'age': [25, 26, 27],
'country': ['US', 'CN', 'JP']}
df = pd.DataFrame(data)
grade_map = {'John': 'A', 'Mary': 'B', 'Tom': 'C'}
df['grade'] = df['name'].map(grade_map)
在代码中,我们在一个字典 grade_map
中增加姓名的 B
编码,然后使用 map()
函数将字典中的 value
映射到新列 grade
中。
结论
在 Pandas 的 DataFrame 中创建新列有多个方法,使用的方法取决于你的数据及情况。上面所介绍的这些方法均可以创建新列并将数据存储到 DataFrame 中,而这也是我们在数据分析和数据加工过程中最常需要的操作之一。