日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

【Pandas库】(5) 索引操作--增、删

發(fā)布時間:2023/11/27 生活经验 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Pandas库】(5) 索引操作--增、删 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

各位同學(xué)好,今天我向大家介紹一下pandas庫中的索引操作--增、刪。

1. 增加

1.1 對series操作

方法一:在原有數(shù)據(jù)上增加,改變原有數(shù)據(jù)。

Series名[新標簽名] = 新標簽名對應(yīng)的值

????????創(chuàng)建Series類型數(shù)據(jù)ps1,它的標簽為'a'到'e',對應(yīng)的值為0到4,原標簽不存在'g',使用ps1['g']=9,在原數(shù)組的最后追加一個標簽'g',以及它對應(yīng)的值9。

import pandas as pd
# 創(chuàng)建一個Series類型數(shù)據(jù),標簽為'a'到'e',對應(yīng)的值為0到4
ps1 = pd.Series(range(5),index=["a","b","c","d","e"]) 
# 新標簽'g',對應(yīng)的值為9
ps1["g"] = 9


?方法二:增加數(shù)據(jù)并賦值給新變量,不影響原來的數(shù)據(jù)

新變量 = Series名.append(Series類型數(shù)據(jù))

? ? ? ? 創(chuàng)建一個Series類型數(shù)據(jù)ps1,使用字典創(chuàng)建一個被追加的Series數(shù)據(jù),append()函數(shù)不會對原數(shù)據(jù)修改,需要用一個新變量來接收這個追加后的結(jié)果。

import pandas as pd
# 創(chuàng)建一個Series類型數(shù)據(jù)
ps1 = pd.Series(range(5),index=["a","b","c","d","e"])
# 利用字典創(chuàng)建一個需要添加的Series類型數(shù)據(jù)
s1 = pd.Series({'f':999})
# 將s1追加到ps1后面
ps2 = ps1.append(s1)


?1.2 對DataFrame操作

(1)對列操作

????????在最后一列后面追加一列:?

???????變量名.[新標簽] = 新標簽對應(yīng)的值

? ? ? ? 該方法會直接對原數(shù)據(jù)修改。如下,使用numpy創(chuàng)建一個1到9的一維數(shù)組,使用shape(行數(shù),列數(shù))函數(shù)變成3行3列的二維數(shù)組,再轉(zhuǎn)換成DataFrame類型。pd1[4]=9,追加一列的新列標簽名是4,這一列的值都是9。注意的是,此處的列標簽名4是int類型,而pd1中的'A'、'B'等都是str類型。

import pandas as pd
import numpy as np
# 在最后一列后面追加一列
pd1 = pd.DataFrame(np.arange(1,10).reshape(3,3),index=["a","b","c"],columns=["A","B","C"])
# 追加一列的列標簽名是4,這一列的值都是9
pd1[4] = 9
# 追加一列的列標簽名是4,這一列的值與列表對應(yīng)
pd1[4] = [11,12,13]  


????????在指定位置插入一列:

???????變量名.insert(下標索引位置前, 索引名, 列數(shù)據(jù))

????????該方法會直接對原數(shù)據(jù)修改。首先下標索引位置是指位置索引標簽,即0、1、2等。插入的索引名和值是插在自己指定的下標位置索引前面一列。如下,我指定位置索引是0,即我想在第1列前面插入一列。我定義的插入的一列的列索引名是'E'。

import pandas as pd
import numpy as np
# 在指定位置插入一列
pd1 = pd.DataFrame(np.arange(1,10).reshape(3,3),index=["a","b","c"],columns=["A","B","C"])
# 插入一列的列位置索引號是0,在0前插入標簽E
pd1.insert(0,"E",[100,100,100])


?(2)對行操作

? ? ? ? 在最后一行的后面追加一行,方法一:

????????變量名.loc[標簽名] = 行數(shù)據(jù)

????????利用標簽索引loc操作,涉及高級索引,后續(xù)章節(jié)會詳述。該方法會直接對原數(shù)據(jù)修改。loc指定行,在原數(shù)據(jù)最后一行后面,新增行標簽'k',及其對應(yīng)的行數(shù)據(jù)。

import pandas as pd
# 在最后一行追加一行
pd1 = pd.DataFrame(np.arange(1,10).reshape(3,3),index=["a","b","c"],columns=["A","B","C"])
pd1.loc["k"] = [77,88,99]


????????在最后一行的后面追加一行,方法二:

? ? ? ? 新變量 = 變量名.append(字典, ignore_index = True)

????????該方法不會直接對原數(shù)據(jù)修改,需使用新變量接收。如下,我有一行數(shù)據(jù)想追加到DataFrame后面,但是直接追加的話,字典的key和dataframe的列標簽名不對應(yīng),無法直接追加,此時使參數(shù)ignore_index = True,使字典的key和dataframe的列標簽自動匹配進行追加。

import pandas as pd
import numpy as np
# 在最后一行追加一行
pd1 = pd.DataFrame(np.arange(1,10).reshape(3,3),index=["a","b","c"],columns=["A","B","C"])
# 創(chuàng)建一個字典,字典的key和pd1的列標簽不對應(yīng),需要調(diào)整位置
row = {"B":0,"A":6,"C":7}  
# 使字典的key和列標簽自動匹配進行追加
pd2 = pd1.append(row,ignore_index=True)


?2. 刪除

2.1 對Series操作

(1)在原始數(shù)據(jù)上刪除:

????????del Series名[索引名]

????????刪除索引名所對應(yīng)的一行數(shù)據(jù)

import pandas as pd
# 刪除一行數(shù)據(jù)
ps1 = pd.Series(range(5),index=["a","b","c","d","e"])
del ps1['c']  #刪除c所在的一行

(2)不影響原始數(shù)據(jù)的刪除:

? ? ? ??新變量 = series名.drop(索引名1, 索引名2)

? ? ? ? 需要一個新變量來接收結(jié)果。可以刪除多行,自行輸入需要刪除的行索引名。

import pandas as pd
ps1 = pd.Series(range(5),index=["a","b","c","d","e"])  #創(chuàng)建一個series類型
# 刪除'a'所在的一行
ps2 = ps1.drop('a')


?2.2 對DataFrame操作

(1)刪除一行:

????????新變量 = 變量名.drop(行索引名)

(2)刪除多行

????????新變量 = 變量名.drop([行索引名1, 行索引名2])

import pandas as pd
import numpy as np
pd1 = pd.DataFrame(np.arange(1,26).reshape(5,5),index=["a","b","c","d","e"],columns=["A","B","C","D","E"])
# 刪除一行
pd_d1 = pd1.drop('a')
# 刪除多行
pd_d2 = pd1.drop(['a','c'])


?(3)刪除一列:

? ? ? ??新變量 = 變量名.drop(索引名, axis = 1)

????????新變量 = 變量名.drop(索引名, axis = 'columns')

?(4)刪除多列:

? ? ? ??新變量 = 變量名.drop([索引名1,索引名2], axis = 1)

????????新變量 = 變量名.drop([索引名1,索引名2], axis = 'columns')

? ? ? ? 該方法需要有變量接收返回值。對列操作需要指定軸axis,axis=1代表列方向,axis=0代表行方向。

import pandas as pd
import numpy as np
pd1 = pd.DataFrame(np.arange(1,16).reshape(3,5),index=["a","b","c"],columns=["A","B","C","D","E"])
# 刪除一行
pd2 = pd1.drop("A",axis=1)  
# 刪除多行
pd3 = pd1.drop(["A","C"],axis='columns')  


?(5)inplace屬性:

????????變量名.drop(行索引名, inplace=True)

????????可直接在原數(shù)據(jù)上修改,不需要新變量來接收返回結(jié)果。

import pandas as pd
import numpy as np
pd1 = pd.DataFrame(np.arange(1,13).reshape(4,3),index=["a","b","c","d"],columns=["A","B","C"])
# 刪除一行
pd1.drop("a",inplace=True)  

總結(jié)

以上是生活随笔為你收集整理的【Pandas库】(5) 索引操作--增、删的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。