import pandas as pd
df.sort_values(by, axis=0, ascending=True, inplace=False, kind='quicksort', na_position='last')
参数说明如下:
axis:{0 or ‘index’, 1 or ‘columns’}, default 0,默认按照列排序,即纵向排序;如果为1,则是横向排序。
by:str or list of str;如果axis=0,那么by=“列名”;如果axis=1,那么by=“行名”。
ascending:布尔型,True则升序,如果by=[‘列名1’,‘列名2’],则该参数可以是[True, False],即第一字段升序,第二个降序。
inplace:布尔型,是否用排序后的数据框替换现有的数据框。
kind:排序方法,{‘quicksort’, ‘mergesort’, ‘heapsort’}, default ‘quicksort’。似乎不用太关心。
na_position:{‘first’, ‘last’}, default ‘last’,默认缺失值排在最后面。
df = pd.DataFrame({'b':[1,2,3,2],'a':[4,3,2,1],'c':[1,3,8,2]},index=[2,0,1,3])
Out[5]:
b a c
2 1 4 1
0 2 3 3
1 3 2 8
3 2 1 2
df.sort_values(by='b') #等同于df.sort_values(by='b',axis=0)
Out[6]:
b a c
2 1 4 1
0 2 3 3
3 2 1 2
1 3 2 8
df.sort_values(by=['b','a'],axis=0,ascending=[False,True])
Out[7]:
b a c
1 3 2 8
3 2 1 2
0 2 3 3
2 1 4 1
df.sort_values(by=3,axis=1) #必须指定axis=1
Out[8]:
a b c
2 4 1 1
0 3 2 3
1 2 3 8
3 1 2 2
df.sort_values(by=[3,0],axis=1,ascending=[True,False])
Out[9]:
a c b
2 4 1 1
0 3 3 2
1 2 8 3
3 1 2 2
注意:指定多列(多行)排序时,先按排在前面的列(行)排序,如果内部有相同数据,再对相同数据内部用下一个列(行)排序,以此类推。如果内部无重复数据,则后续排列不执行。即首先满足排在前面的参数的排序,再排后面参数。
原文出自:https://www.jianshu.com/p/f0ed06cd5003
df.drop_duplicates(subset=['A','B','C'],keep='first',inplace=True)
参数说明如下:
subset:表示要进去重的列名,默认为 None。
keep:有三个可选参数,分别是 first、last、False,默认为 first,表示只保留第一次出现的重复项,删除其余重复项,last 表示只保留最后一次出现的重复项,False 则表示删除所有重复项。
inplace:布尔值参数,默认为 False 表示删除重复项后返回一个副本,若为 Ture 则表示直接在原数据上删除重复项。
data = {'A':[1, 0, 1, 1], 'B':[0, 2, 5, 0], 'C':[4, 0, 4, 4], 'D':[1, 0, 1, 1]}
df = pd.DataFrame(data=data)
Out[3]:
A B C D
0 1 0 4 1
1 0 2 0 0
2 1 5 4 1
3 1 0 4 1
df.drop_duplicates()
Out[4]:
// 删除了第4列
A B C D
0 1 0 4 1
1 0 2 0 0
2 1 5 4 1
df.drop_duplicates(keep='last')
Out[6]:
// 删除了第0列
A B C D
1 0 2 0 0
2 1 5 4 1
3 1 0 4 1
df.drop_duplicates(keep='last').reset_index(drop=True)
Out[8]:
// 使用reset_index函数后,可以将行标签重新从0开始排序
A B C D
0 0 2 0 0
1 1 5 4 1
2 1 0 4 1
df.drop_duplicates(keep=False)
Out[9]:
// 删除了第0列和第3列
A B C D
1 0 2 0 0
2 1 5 4 1
df.drop_duplicates(subset=['D'], keep=False)
Out[11]:
// 删除了第0,2,3列,他们的D列都是1
A B C D
1 0 2 0 0
原文出自:http://c.biancheng.net/pandas/drop-duplicate.html