Pandas数据框可以按索引和值排序

我们可以按行值/列值对Pandas数据框进行排序。同样,我们也可以按行索引/列索引进行排序。

Pandas DataFrame按值排序
key = None)

DataFrame或无。
None,则为DataFrame。
1.按一列对数据框进行排序
通过从CSV文件读取来创建DataFrame。
import pandas as pd df=pd.read_csv("C:\pandas_experiment\pandas_sorting\data1.csv") df
EmpId)中的值对数据框进行排序。
df.sort_values('EmpID')

默认情况下,它将以升序排序。该索引也将保持不变。
返回类型是一个数据框。它不会修改原始数据框。
2.按一列按降序对数据框进行排序
ascending=False。
返回类型是一个数据框。它不会修改原始数据框。
df.sort_values(‘EmpID’,ascending=False)

3.按两列对数据框进行排序
EmpID
df.sort_values(by=['Skill','EmpID'])

EmpID 升序排序。
返回类型是一个数据框。它不会修改原始数据框。
4.按两列以不同顺序对数据框进行排序
EmpID。一列以升序排列,另一列以降序排列。
df.sort_values(by=['Skill','EmpID'],ascending=[True,False])

EmpID 降序排序。
返回类型是一个数据框。它不会修改原始数据框。
5.通过将NaN放在首位对数据帧进行排序
na_position=”first”
df.sort_values("Salary",na_position='first')

返回类型是一个数据框。它不会修改原始数据框。
6.就地排序数据框
inplace=True),它将执行就地操作。修改原始数据框本身。返回类型为无。
df.sort_values("Salary",inplace=True) df

7.通过忽略索引对数据帧进行排序。
ignore_index=True
,则结果轴将标记为0、1,…,n-1。
df.sort_values("Salary",ignore_index=True)
8.使用键功能对数据框进行排序
Python文档
df.sort_values(by=["Skill"],key=lambda x:x.str.lower())
“Skill” 列中的所有值,然后进行排序。如果包含相同的值,则基于行索引进行排序。
“Skill”列上调用键函数,则大写字母将首先排序。
df.sort_values(by=["Skill"])

9.按字符串长度对数据框进行排序
“Skill”
df.sort_values(by=["Skill"],key=lambda x:x.str.len())

10.按行值对数据框进行排序
我们还可以按特定的行值对数据框进行排序。
创建一个包含数字的数据框。
df = pd.DataFrame(data={'x':[10,30,20], 'y':[1,2,3],'z':[5,15,10]})
df
row 0 默认情况下,它将按升序对行中的值进行排序。
df.sort_values(by=0,axis=1)
by=0 表示第0行。
axis=1 指示要排序的列。
TypeError。
df1 = pd.DataFrame(data={'x':[10,10,"d"], 'y':['a',5,'c'],'z':[5,15,'a']})
df1
row 0包含字符串和整数。
df1.sort_values(by=0,axis=1)
TypeError: ‘<’ not supported between instances of ‘str’ and ‘int’
str仅包含,第2行仅包含。
df1.sort_values(by=2,axis=1)
Pandas.DataFrame.sort_index
DataFrame.sort_index(axis=0, level=None, ascending=True, inplace=False, kind='quicksort', na_position='last', sort_remaining=True, ignore_index=False, key=None)
按标签(沿轴)对对象排序。
None。
1.按行索引对数据框进行排序
创建一个数据框。
df=pd.read_csv("C:\pandas_experiment\pandas_sorting\data2.csv") df

EmpID列设置为行索引。
df.set_index('EmpID',inplace=True)

我们可以按行索引和列索引对数据进行排序。
df.sort_index() or df.sort_index(axis=0)
axis=0表示按行索引排序。

默认情况下,它将以升序排序。
2.按列索引对数据框进行排序
axis=1。
df.sort_index(axis=1)

默认情况下,它将按升序排序。
3.排序具有多索引的数据框
创建一个数据框并将两列设置为row_index。
df=pd.read_csv("C:\pandas_experiment\pandas_sorting\data2.csv") df.set_index(["EmpID","Age"],inplace=True)
“EmpID”
df.sort_index(level=0)
“Age”
sort_remaining=True表示如果按级别和索引排序是多级的,则在按指定级别排序后也按其他级别(按顺序)排序。
“EmpID”)进行排序
df.sort_index(level=1)

4.仅将具有多索引的数据框按一级排序
sort_remaining=False,我们只能将具有多索引的数据框排序为一级。
df.sort_index(level="Age",sort_remaining=False)

“Age” 索引排序。
5.按索引降序对数据框排序
ascending=False,它将根据提到的索引以降序对数据帧进行排序。
df.sort_index(axis=0,ascending=False)

结论:
-
如果对pandas数据框进行排序,则返回带有排序值的数据
inplace=False框。否则,如果inplace=True返回None,它将修改原始数据框本身。 -
默认情况下,所有排序仅按升序进行。如果我们提到的话,
ascending=False它将以降序排列。
