您的位置:

dataframe加一列

在数据处理中,常常会需要给数据添加一些列,比如计算出某一行的总和,或者根据已有的数据算出新的数据等等。在Pandas数据分析库中,我们可以轻易地实现给dataframe添加一列的功能。

一、dataframe加一列数据

在Pandas库中,我们可以通过将一个Series类型的数据插入到dataframe中,从而实现给dataframe加一列。这里演示一个简单的例子:在一个学生信息的dataframe中,我们添加一列记录学生的性别。

import pandas as pd

# 创建dataframe
df = pd.DataFrame({'姓名':['小明', '小红', '小华'], '年龄':[20, 21, 19]})

# 添加性别列
gender = pd.Series(['男', '女', '男'])
df['性别'] = gender

print(df)
输出结果如下:

   姓名  年龄 性别
0  小明   20  男
1  小红   21  女
2  小华   19  男
我们首先创建了一个包含三行(三个学生)的dataframe,然后通过Series类型的数据`gender`,将性别信息添加到dataframe中。在输出结果中可以看到,dataframe中已经成功添加了新的一列。

二、dataframe增加一列索引

在Pandas库中,每一个dataframe和series对象都有一个索引(index)属性,它用来标识每一个元素(行或列)在数据集中的位置。在给dataframe添加新列时,我们可以通过修改索引值的方式来实现。

# 创建dataframe,指定索引为学生的编号(001、002、003)
df = pd.DataFrame({'姓名':['小明', '小红', '小华'], '年龄':[20, 21, 19]}, index=['001', '002', '003'])

# 添加性别列
gender = pd.Series(['男', '女', '男'], index=['001', '002', '003'])
df['性别'] = gender

print(df)
输出结果如下:

    姓名  年龄 性别
001  小明   20  男
002  小红   21  女
003  小华   19  男
我们通过设置索引为学生的编号,来标识每个学生在数据集中的位置。然后通过设置相同的索引值,来实现将性别信息添加到dataframe中。

三、dataframe加一列自增长复制

除了手动将数据插入到dataframe中,我们还可以通过使用`range`函数生成一组自增长的数据,然后再赋值给已有的dataframe中的新列。这里我们演示一下怎么生成一组自增长的数据,在dataframe中添加新列。

# 创建dataframe
df = pd.DataFrame({'姓名':['小明', '小红', '小华'], '年龄':[20, 21, 19]})

# 添加id列(自增长)
df['id'] = range(1, len(df)+1)

print(df)
输出结果如下:

   姓名  年龄  id
0  小明   20   1
1  小红   21   2
2  小华   19   3
我们通过使用`range`函数生成了一个从1到dataframe数据行数+1的自增长序列,然后将其赋值给新的列'id'。这样我们就成功地在dataframe中添加了一列新的自增长数据。

四、dataframe添加一列数据

在dataframe中添加一列数据,最常用的方法就是将新的值插入到一个新的series中,然后将这个series作为新的列加入到dataframe中。

# 创建dataframe
df = pd.DataFrame({'姓名':['小明', '小红', '小华'], '年龄':[20, 21, 19]})

# 添加身高数据列
height = [175, 165, 172]
df['身高'] = height

print(df)
输出结果如下:

   姓名  年龄   身高
0  小明   20  175
1  小红   21  165
2  小华   19  172
我们使用了常规的列表形式来添加新的身高数据列。在添加完之后,我们可以通过打印出整个dataframe来确认新的列是否添加成功。

五、dataframe修改数据

有时候我们需要修改已有的dataframe中的数据,比如对某一行、某一列的数据进行修改。Pandas库中提供了`loc`和`iloc`两个方法,可以让我们非常方便地实现修改已有数据的功能。

# 创建dataframe
df = pd.DataFrame({'姓名':['小明', '小红', '小华'], '年龄':[20, 21, 19], '身高':[175, 165, 172]})

# 修改小红的身高数据
df.loc[1, '身高'] = 168

print(df)
输出结果如下:

   姓名  年龄   身高
0  小明   20  175
1  小红   21  168
2  小华   19  172
我们使用`loc`方法定位到‘小红’这一行,并将‘身高’这一列的数据修改为168。在最后打印整个dataframe时,我们可以看到已经成功地修改了对应的数据。

六、python dataframe增加一列

当我们需要求出某一列的总和、均值等统计信息时,我们需要在dataframe中加入一列统计数据。Pandas库中提供了各种聚合函数,可以满足我们所有的需求。

# 创建dataframe
df = pd.DataFrame({'科目':['语文', '数学', '英语'], '成绩':[90, 85, 92]})

# 添加统计数据列(平均分)
average = df['成绩'].mean()
df['平均分'] = average

print(df)
输出结果如下:

   科目  成绩       平均分
0  语文  90  89.000000
1  数学  85  89.000000
2  英语  92  89.000000
我们使用`mean()`方法求出了‘成绩’这一列的平均分,并将其赋值给新的列‘平均分’。在打印结果中,我们可以看到新的一列统计数据已经成功地添加到了dataframe中。

七、dataframe插入数据

在dataframe中插入数据并不是一种常见的情况,但是有时有这种需求的时候,我们可以使用`insert`函数来实现。

# 创建dataframe
df = pd.DataFrame({'姓名':['小明', '小红', '小华'], '年龄':[20, 21, 19], '性别':['男', '女', '男']})

# 插入身高数据列(在年龄列的后面)
height = [175, 165, 172]
df.insert(2, '身高', height)

print(df)
输出结果如下:

   姓名  年龄   身高 性别
0  小明   20  175  男
1  小红   21  165  女
2  小华   19  172  男
我们使用了`insert`函数,将身高数据列插入到了‘年龄’这一列的后面,插入时需要指定插入的位置(列索引)和插入的列名称。在输出结果中,我们可以看到新的一列成功地插入到了dataframe中。

八、dataframe加一列并且赋值为0

有时候我们需要先将新的一列添加到dataframe中,然后将整列数据赋值为0,这时我们可以通过先创建一个全0的series类型数据,然后将其插入到dataframe中,从而实现在dataframe中添加新的全0列。

# 创建dataframe
df = pd.DataFrame({'姓名':['小明', '小红', '小华'], '年龄':[20, 21, 19], '性别':['男', '女', '男']})

# 添加全0列(成绩)
score = pd.Series(data=0, index=df.index)
df['成绩'] = score

print(df)
输出结果如下:

   姓名  年龄 性别  成绩
0  小明   20  男   0
1  小红   21  女   0
2  小华   19  男   0
我们使用了`pd.Series`的用法生成了一个全为0的series类型数据,并将其添加到dataframe中,从而得到了新的全0列‘成绩’。在输出结果中,我们可以看到新的列已经成功地添加到了dataframe中。

九、dataframe加一列并且赋值为bool

在一些数据挖掘的场景中,我们需要根据某些条件创建新的列,并将该列赋值为bool类型的值。在Pandas库中,我们可以使用`loc`方法来实现这一功能。

# 创建dataframe
df = pd.DataFrame({'姓名':['小明', '小红', '小华'], '年龄':[20, 21, 19], '性别':['男', '女', '男']})

# 添加新列male,如果性别为男则为True,否则为False
df.loc[df['性别']=='男', 'male'] = True
df.loc[df['性别']=='女', 'male'] = False

print(df)
输出结果如下:

   姓名  年龄 性别  male
0  小明   20  男  True
1  小红   21  女 False
2  小华   19  男  True
我们使用了两个`loc`方法,判断性别为‘男’的行,将新的列‘male’赋值为True,否则赋值为False。在输出结果中,我们可以看到已经成功地创建了新的bool类型的列‘male’。