Pands 提供了两种排序方法,分别是按标签排序和按数值排序。
创建数据
下面创建一组 DataFrame 数据,如下所示:
import pandas as pd
import numpy as np
#行标签乱序排列,列标签乱序排列
data = pd.DataFrame(np.random.randn(10,2),index=[1,6,4,2,3,5,9,8,0,7],columns=['A','B'])
print(data)
使用 sort_index() 方法对行标签排序,指定轴参数(axis)或者排序顺序。或者可以对 DataFrame 进行排序。
1、默认情况下,按照行标签序递增排序。
import pandas as pd
import numpy as np
#行标签乱序排列,列标签乱序排列
data = pd.DataFrame(np.random.randn(10,2),index=[1,6,4,2,3,5,9,8,0,7],columns=['a','b'])
sorted_data = data.sort_index()
print(sorted_data)
打印结果
2、递减排序
通过将布尔值传递给ascending参数,可以控制排序的顺序。
import pandas as pd
import numpy as np
#行标签乱序排列,列标签乱序排列
data = pd.DataFrame(np.random.randn(10,2),index=[1,6,4,2,3,5,9,8,0,7],columns=['a','b'])
sorted_data = data.sort_index(ascending=False)
print(sorted_data)
通过给 axis 轴参数传递 0 或 1,可以对列标签进行排序。默认情况下,axis=0 表示按行排序;而 axis=1 则表示按列排序。
import pandas as pd
import numpy as np
#行标签乱序排列,列标签乱序排列
data = pd.DataFrame(np.random.randn(10,2),index=[1,6,4,2,3,5,9,8,0,7],columns=['a','b'])
sorted_data = data.sort_index(axis=1)
print(sorted_data)
import pandas as pd
import numpy as np
#行标签乱序排列,列标签乱序排列
data = pd.DataFrame(np.random.randn(10,2),index=[1,6,4,2,3,5,9,8,0,7],columns=['a','b'])
sorted_data = data.sort_index(axis=0)
print(sorted_data)
与标签排序类似,sort_values() 表示按值排序。它接受一个by参数,该参数值是要排序数列的 DataFrame 列名。
数据示例
import pandas as pd
data = pd.DataFrame({'a':[2,1,1,1],'b':[1,3,2,4]})
print (data)
import pandas as pd
data = pd.DataFrame({'a':[2,1,1,1],'b':[1,3,2,4]})
sorted_data = data.sort_values(by='a')
print (sorted_data)
import pandas as pd
data = pd.DataFrame({'a':[2,1,1,1],'b':[1,3,2,4]})
sorted_data = data.sort_values(by=['a','b'])
print (sorted_data)