pandas 4 - 排序( tcy)
生活随笔
收集整理的這篇文章主要介紹了
pandas 4 - 排序( tcy)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
排序 2018/12/1 2018/12/15?
分類:按索引標簽排序,按列值排序,以及兩者的組合排序
1.1?序列按值,索引排序:
s=pd.Series(np.arange(4),index=list('dabc'))s.sort_values() # 按值排序 s.sort_index(ascending=True) # 按行或列索引排序?1.2序列多索引排序:?
arrays = [np.array(['d4', 'd4', 'b2', 'b2','c3', 'c3', 'a1', 'a1']), np.array(['ss2', 'ss1', 'ss2', 'ss1','ss2', 'ss1', 'ss2', 'ss1'])] s = pd.Series([1, 2, 3, 4, 5, 6, 7, 8], index=arrays)s.sort_index(level=1) #指定要排序的索引級別 s.sort_index(level=1, sort_remaining=False)#按級別排序時,不按剩余級別排序# s # 輸出: # 輸出: # d4 ss2 1 # a1 ss1 8 # d4 ss1 2 # ss1 2 # b2 ss1 4 # b2 ss1 4 # b2 ss2 3 # c3 ss1 6 # c3 ss1 6 # ss1 4 # d4 ss1 2 # a1 ss1 8 # c3 ss2 5 # a1 ss2 7 # d4 ss2 1 # ss1 6 # b2 ss2 3 # b2 ss2 3 # a1 ss2 7 # c3 ss2 5 # c3 ss2 5 # ss1 8 # d4 ss2 1 # a1 ss2 7 # dtype: int64 # dtype: int64 # dtype: int64 ?2.1數(shù)據(jù)幀按值排序:??
df1 = pd.DataFrame({'A1':[2,1,1,1],'A2':[1,3,2,4],'A3':[5,4,3,2]}) df1[['A1', 'A2', 'A3']].sort_values(by=['A1','A2']) #值按列排序 df1.sort_values(by=3,axis=1) #值按行排序df = pd.DataFrame({'A1' : ['a', 'a', 'b', np.nan, 'd', 'c'],#不能夠按行值排序'A2' : [2, 1, 9, 8, 7, 4],'A3': [0, 1, 9, 4, 2, 3]})df.sort_values(by=['A1', 'A2']) #按A1A2列值排序 df.sort_values(by='A1', ascending=False) #按A1列值排序降序# df #輸出 #輸出 # A1 A2 A3 # A1 A2 A3 # A1 A2 A3 # 0 a 2 0 # 1 a 1 1 # 4 D 7 2 # 1 a 1 1 # 0 a 2 0 # 5 C 4 3 # 2 b 9 9 # 2 b 9 9 # 2 B 9 9 # 3 NaN 8 4 # 5 c 4 3 # 0 A 2 0 # 4 d 7 2 # 4 d 7 2 # 1 A 1 1 # 5 c 4 3 # 3 NaN 8 4 # 3 NaN 8 4 ?2.2數(shù)據(jù)幀按索引排序:?
df=pd.DataFrame(np.arange(8).reshape(2,4),index=['a','b'],columns=list('DABC'))df.sort_index(axis=0,ascending=True)# 按行標簽排序 df.sort_index(axis=1,ascending=True)# 按列標簽排序 df.reindex(index=['a', 'b', 'c'], columns=['A', 'B', 'E']) ?2.3按索引和值排序:?
# 作為by參數(shù)可以引用列或索引級別名稱。 idx = pd.MultiIndex.from_tuples([('a', 1), ('a', 2), ('a', 2), ('b', 2), ('b', 1), ('b', 1)]) idx.names = ['first', 'second'] df = pd.DataFrame({'A': np.arange(6, 0, -1)},index=idx)df.sort_values(by=['second', 'A'])#按'second'(索引)和'A'(列)排序# df #df.sort_values# A # A # first second # first second # a 1 6 # b 1 1 # 2 5 # 1 2 # 2 4 # a 1 6 # b 2 3 # b 2 3 # 1 2 # a 2 4 # 1 1 # 2 5 ? 3.searchsorted()# 1D 查找應該插入元素以維持順序的索引 s.searchsorted(value, side='left', sorter=None)#查找應該插入元素以維持順序的索引 s = pd.Series([10,12,13,15])s.searchsorted([10, 13]) # array([0, 2]) <=10都為0 s.searchsorted([10, 14]) # array([0, 3]) >13 and <=15都為3s.searchsorted([11, 13], side='right') # array([1, 3]) s.searchsorted([11, 13], side='left') # array([1, 2], dtype=int64)s = pd.Series([3, 1, 2]) s.searchsorted([0, 3], sorter=np.argsort(s)) # array([0, 2]) ? 4.最小/最大值索引nsmallest()和nlargest() # 快于head(n) 實例1:-Series?s = pd.Series([4,2,3,5,6,0,1]) s.sort_values()# 0...6 s.nsmallest(3) # 0 1 2 s.nlargest(3) # 6 5 4 ??
實例2:-DataFrame?df = pd.DataFrame({'a': [-2, -1, 1, 10, 8, 11, -1], 'b': list('abdceff'), 'c': [1.0, 2.0, 4.0, 3.2, np.nan, 3.0, 4.0]})df.nlargest(3, 'a') , df.nlargest(3, ['a', 'c']) df.nsmallest(3, 'a'),df.nsmallest(3, ['a', 'c'])# a b c # a b c # 0 -2 a 1.0 # 0 -2 a 1.0 # 1 -1 b 2.0 # 1 -1 b 2.0 # 6 -1 f 4.0 # 6 -1 f 4.0??5.rank()返回從小到大排序的下標?
s = pd.Series([7,-5,7,4,2,0,4]) s.rank(method='first')#根據(jù)值在原數(shù)據(jù)中出現(xiàn)的順序排名df=pd.Datadf({'b':[5,7,-3,2],'a':[0,1,0,1],'c':[-2,5,8,-3]}) df.rank(axis=0) #指定要進行排序的軸 ?備注:
obj.sort_values(axis=0, ascending=True, inplace=False, kind='quicksort', na_position='last')#按值排序 obj.sort_index(axis=0, level=None, ascending=True, inplace=False,kind='quicksort', na_position='last', sort_remaining=True) #按索引標簽排序 # 參數(shù): # axis=0 #軸直接排序。對于系列來說,這只能是0。 # level:int #對指定索引級別的值進行排序。 # ascending=true #默認按升序排序。 # inplace=False #為True則就地執(zhí)行操作。 # kind: {'quicksort','mergesort','heapsort'}選擇排序算法 # na_position:{'first','last'} #將NaN放在開頭或最后。 # sort_remaining=True #按級別排序,是否按剩余級別排序 ??
?
?
?
總結(jié)
以上是生活随笔為你收集整理的pandas 4 - 排序( tcy)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 谷歌浏览器字体设置
- 下一篇: CUDA程序性能优化 并行归约