索引是DataFrame和Series的行標籤,而且能夠有一個或多個索引。若是DataFrame和Series有一個索引,稱做單級別索引;若是有多個索引,稱做多級別索引。索引相似於DataFrame和Sereis的一列數據,能夠有多種數據類型。索引的類型有:整數索引(Numeric Index)、分類索引(Category Index)、日期時間索引(DateTime Index、Timedelta Index)、時期索引(Period Index)、範圍索引(Range Index)、間隔索引(Interval Index)、多級索引(Multi-level Index)。html
多級索引(Multi-Level Index)是指序列(Series)或數據框(DataFrame)有多個索引,多級索引相似於二維關係表,也就是說,Series或DataFrame有一個相似於DataFrame結構的索引。數組
最經常使用的索引是整數索引、分類索引和日期索引。函數
用於建立索引的最基礎的構造函數:ui
pandas.Index(data,dtype=object,copy,name,tupleize_cols=True)
參數註釋:spa
舉個例子,建立一個整數索引:rest
>>> pd.Index([1, 2, 3]) Int64Index([1, 2, 3], dtype='int64')
索引相似於二維關係表的一列,具備特定的屬性:code
檢查缺失值,isna() 對索引中的每一個值進行檢查,當值是NA時,返回True;當值不是NA時,返回False。 notna()對索引中的每一個值進行檢查,當值不是NA時,返回True;當值是NA時,返回False。htm
Index.isna(self)
Index.notna(self)
填充缺失值,用標量值來填充NA值,downcast表示向下類型兼容:對象
Index.fillna(self, value=None, downcast=None)
刪除缺失值,參數how表示如何刪除缺失值,有效值是any和all:blog
Index.dropna(self, how='any')
按照索引的值進行排序,可是返回索引值的下標,參數 *args和 **kwargs都是傳遞給numpy.ndarray.argsort函數的參數。
Index.argsort(self, *args, **kwargs)
按照索引的值進行排序,返回排序的副本,參數return_indexer 表示是否返回索引值的下標:
Index.sort_values(self, return_indexer=False, ascending=True)
舉個例子,有以下索引:
>>> idx = pd.Index(['b', 'a', 'd', 'c']) Index(['b', 'a', 'd', 'c'], dtype='object')
按照索引值進行排序,返回排序索引的下標:
>>> order = idx.argsort() >>> order array([1, 0, 3, 2])
經過下標來查看索引的排序值:
>>> idx[order] Index(['a', 'b', 'c', 'd'], dtype='object')
固然,也能夠直接返回已排序的索引:
>>> idx.sort_values() Index(['a', 'b', 'c', 'd'], dtype='object')
若是要返回已排序的索引和對應的下標,須要設置參數return_indexer=True:
>>> idx.sort_values(return_indexer=True) (Index(['a', 'b', 'c', 'd'], dtype='object'), array([1, 0, 3, 2], dtype=int64))
能夠把索引轉換爲List、DataFrame、序列、數組(ndarray)等,ravel()函數用於把索引值展開成數組形式。
Index.to_list(self) Index.to_frame(self, index=True, name=None) Index.to_series(self, index=None, name=None) Index.ravel(self, order='C')
把索引值的類型轉換爲指定的類型:
Index.astype(self, dtype, copy=True)
對索引值能夠進行一系列的操做,下面列出最經常使用的索引操做的函數:
1,返回索引值的最大值或最小值所在的索引
Index.argmin(self, axis=None, skipna=True, *args, **kwargs)
Index.argmax(self, axis=None, skipna=True, *args, **kwargs)
2,刪除索引值
刪除指定的索引值
Index.delete(self, loc) Index.drop(self, labels, errors='raise')
3,重複值
drop_duplicates()函數用於把重複的值刪除,keep參數的有效值是first、false和False,frist表示保留第一次、last表示保留最後一次、False表示把重複的值刪除。
Index.drop_duplicates(self, keep='first')
檢查索引值是不是重複的,當出現重複值時,把索引值相應位置的值設置爲True。
Index.duplicated(self, keep='first')
4,插入新值
Index.insert(self, loc, item)
5,重命名索引的name屬性
Index.rename(self, name, inplace=False)
6,索引的惟一值
Index.unique(self, level=None)
7,獲取索引的下標
第一種方式是傳遞索引值列表:
Index.get_indexer(self, target, method=None, limit=None, tolerance=None)
參數註釋:
target:索引列表
method:None, ‘pad’/’ffill’, ‘backfill’/’bfill’, ‘nearest’
limit:在target中不能徹底匹配的連續標籤的最大數量
tolerance:不能徹底匹配的原始索引和新索引之間的最大距離, 匹配位置處的索引值最知足方程 abs(index [indexer]-target)<=tolerance。
第二種方式是傳遞一個索引的標量值,返回該標量值在索引中的位置:
Index.get_loc(self, key, method=None, tolerance=None)
參考文檔: