【Python】【pandas-彙總4】Index的主要屬性和函式
阿新 • • 發佈:2019-01-30
1.Index
pandas的索引物件負責管理軸標籤和其他元資料(比如軸名稱等)。構建Series或DataFrame時,所用到的任何陣列或其他序列的標籤都會被轉換成一個Index。Index物件不可修改,從而在多個數據結構之間安全共享。
1.2.Index屬性
主要的Index物件 | 說明 |
Index | 最廣泛的Index物件,將軸標籤表示為一個由Python物件組成的NumPy陣列 |
Int64Index | 針對整數的特殊Index |
MultiIndex | “層次化”索引物件,表示單個軸上的多層索引。可以看做由元組組成的陣列 |
DatetimeIndex | 儲存納秒級時間戳(用NumPy的Datetime64型別表示) |
PeriodIndex | 針對Period資料(時間間隔)的特殊Index |
1.3Index函式
函式 | 說明 |
Index([x,y,...]) | 建立索引 |
append(Index) | 連線另一個Index物件,產生一個新的Index |
diff(Index) | 計算差集,產生一個新的Index |
intersection(Index) | 計算交集 |
union(Index) | 計算並集 |
isin(Index) | 檢查是否存在與引數索引中,返回bool型陣列 |
delete(i) | 刪除索引i處元素,得到新的Index |
drop(str) | 刪除傳入的值,得到新Index |
insert(i,str) | 將元素插入到索引i處,得到新Index |
Index.is_monotonic | 屬性:當各元素大於前一個元素時,返回true |
Index.is_unique | 屬性:當Index沒有重複值時,返回true |
Index.unique | 屬性:計算Index中唯一值的陣列 |
2.示例
# -*- coding: utf-8 -*- """ @author: 蔚藍的天空Tom Aim:Index屬性和函式的示例 """ import pandas as pd from pandas import Series from pandas import DataFrame if __name__=='__main__': s = pd.Series(['a', 'b', 'c'], index=['No.1', 'No.2', 'No.3']) ind1 = s.index #將軸標籤表示為一個由Python物件組成的NumPy陣列 #Index(['No.1', 'No.2', 'No.3'], dtype='object') #檢視內容 ind1[0] #No.1 ind1[1] #No.2 ind1[-1] #No.3 s.index is ind1 #True 'No.1' in ind1 #True s2 = pd.Series(['a', 'b', 'c', 'd'], index=['No.1', 'No.2', 'No.3', 'No.4']) ind2 = s2.index #Index(['No.1', 'No.2', 'No.3', 'No.4'], dtype='object') #difference 計算索引的差集 ret = ind1.difference(ind2) #Index([], dtype='object') ret = ind2.difference(ind1) #Index(['No.4'], dtype='object') #append(Indexs) #連線另一個Index物件,產生一個新的Index ret = ind1.append(ind2) #Index(['No.1', 'No.2', 'No.3', 'No.1', 'No.2', 'No.3', 'No.4'], dtype='object') #intersection(Index) 計算交集 ret = ind1.intersection(ind2) #Index(['No.1', 'No.2', 'No.3'], dtype='object') #union(Index) 計算並集 ret = ind1.union(ind2) #Index(['No.1', 'No.2', 'No.3', 'No.4'], dtype='object') #isin(Index) 檢查是否存在與引數索引中,返回bool型陣列 ind1 #Index(['No.1', 'No.2', 'No.3'], dtype='object') ind2 #Index(['No.1', 'No.2', 'No.3', 'No.4'], dtype='object') ret = ind1.isin(ind2) #[ True True True] ret = ind2.isin(ind1) #[ True True True False] #delete(i) 刪除索引i處元素,得到新的Index,不修改源index ret = ind1.delete(0) #Index(['No.2', 'No.3'], dtype='object') #drop(str) 刪除傳入的值,得到新Index,不修改源index ret = ind1.drop('No.1') #Index(['No.2', 'No.3'], dtype='object') #insert(i,str) 將元素插入到索引i處,得到新Index,不修改源index ret = ind1.insert(0, 'XXX') #Index(['XXX', 'No.1', 'No.2', 'No.3'], dtype='object') #is_monotonic() 當各元素大於前一個元素時,返回true ret = ind1.is_monotonic #True #is_unique() 當Index沒有重複值時,返回true ret = ind1.is_unique #True 說明ind1中沒有重複值 #unique 計算index中唯一值的陣列,即去重後的index ret = ind1.unique #<bound method IndexOpsMixin.unique of Index(['No.1', 'No.2', 'No.3'], dtype='object')>
(end)