在數據處理中,常常會需要給數據添加一些列,比如計算出某一行的總和,或者根據已有的數據算出新的數據等等。在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』。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/257679.html