reindex是pandas對象的重要方法。該方法用於建立一個符合新索引的新對象。數組
import pandas as pd obj = pd.Series([4.5, 7.2, -5.3, 3.6], index=['d','b','a','c']) print(obj)
Series調用reindex方法會按新索引從新排列。app
obj2 = obj.reindex(['a','b','c','d','e']) print(obj2)
fill向前填充數據,bfill向後填充數據:dom
obj3 = pd.Series(['blue','purple','yellow'], index=[0, 2, 4]) print(obj3) print(obj3.reindex(range(6),method='ffill'))
在DataFrame中,reindex方法的index關鍵字能夠改變行索引,columns關鍵字能夠改變列索引。函數
可使用loc進行簡潔的標籤索引。3d
drop方法會返回一個含有指示值或軸向上刪除值的新對象:code
obj = pd.Series(np.arange(5.),index=['a', 'b', 'c', 'd', 'e']) print(obj) new_obj = obj.drop('c') print(new_obj)
在DataFrame中調用drop會刪除行標籤上的值,能夠經過傳遞axis=1
或者axis='columns'
來從列中刪除值,以下:對象
data = pd.DataFrame(np.arange(16).reshape((4, 4)), index=['Ohio', 'Colorado', 'Utah', 'New York'], columns=['one', 'two', 'three', 'four']) print(data) # 刪除行標籤 print(data.drop(['Colorado', 'Ohio'])) # 刪除列標籤 print(data.drop(['one','three'],axis=1)) print(data.drop('two',axis='columns'))
普通的Python切片是不包含尾部的,Series的切片包含。blog
DataFrame在行上的標籤索引,可使用loc(軸標籤)和iloc(整數標籤)。排序
data1 = pd.DataFrame(np.arange(16).reshape((4, 4)), index=['Ohio', 'Colorado', 'Utah', 'New York'], columns=['one', 'two', 'three', 'four']) print(data1.loc['Colorado', ['two', 'three']]) print(data1.iloc[1, [1, 2]])
也可使用切片功能。索引
爲了保持一致性,若是你有一個包含整數的軸索引,數據選擇時請始終使用標籤索引。
在沒有交疊的標籤位置上,內部數據對齊會產生缺失值。
在兩個不一樣的索引化對象之間進行算術操做時,可能會想要使用特殊值填充。 例如:有df1,df2兩個數據,二者行或列不徹底相同,那麼將二者添加到一塊兒會致使在一些不重疊的位置出現NA值。
可使用df1.add(df2,fill_value=0)
這些出現NA值的地方會被以0填充。
表中是Series和DataFrame的算術方法,這些方法中的每個都有一個以r開頭的副本,這些副本方法的參數是翻轉的。
所以下面兩個語句的結果相等:1/df1
等價於 df1.rdiv(1)
一般咱們須要將函數應用到一行或者一列的一維數組上。DataFrame的apply方法能夠實現此功能:
frame = pd.DataFrame(np.random.randn(4, 3), columns=list('bde'), index=['Utha', 'Ohio', 'Texas', 'Oregon']) f = lambda x: x.max() - x.min() # 會被列調用一次 print(frame.apply(f))
若是傳遞axis='columns'
給apply函數,函數會被每行調用。
若是想操做DataFrame中的每一個元素可使用applymap方法。
若是須要按行、列索引進行字典排序,須要使用sort_index方法。該方法返回一個全新的,排序好的對象。
數據默認升序排序,可使ascending=False
使數據降序。
若是要按Series的值進行排序,使用sort_values
方法。
默認狀況下,全部缺失值會被排序至Series的尾部。
當對DataFrame排序時,能夠傳遞一個或多個列名給sort_values的可選參數by。
排名是指對數組從1至有效數據點總數分配名詞的操做。rank經過將平均排名分配到每一個組來打破平級關係。
obj = pd.Series([7, -5, 7, 4, 2, 0, 4]) print(obj.rank())
排名也能夠根據他們在數據中的觀察順序進行分配。
print(obj.rank(method='first'))
下表是可用的平級關係打破方法列表。
DataFrame能夠對行或列計算排名。
obj = pd.Series(np.arange(5),index=['a', 'a', 'b', 'b', 'c']) print(obj)
索引的is_unique屬性能夠告訴你它的標籤是否惟一。
print(obj.index.is_unique)
帶有重複索引的狀況下,根據一個標籤索引多個條目會返回一個序列,而單個條目會返回標量值。
這會使得代碼更加複雜,由於來自索引的輸出類型可能因標籤是否重複而有所不一樣。