Pandas DataFrame DataFrame.sort_values() 函数
Pandas DataFrame.sort_values() 方法将调用者 DataFrame
沿任一索引的指定列中的值按升序或降序排序。
pandas.DataFrame.sort_values()
语法
DataFrame.sort_values(
by,
axis=0,
ascending=True,
inplace=False,
kind="quicksort",
na_position="last",
ignore_index=False,
)
参数
by |
要排序的名称或名称列表 |
axis |
沿行(axis=0 )或列(axis=1 )排序 |
ascending |
按升序排序(ascending=True )或降序排序(ascending=False ) |
inplace |
布尔型。如果为 True ,就地修改调用者 DataFrame |
kind |
排序算法。默认为 quicksort |
na_position |
将 NaN 值放在开头(na_position =first )或结尾(na_position =last ) |
ignore_index |
布尔型。如果是 True ,则忽略原始 DataFrame 中的索引,默认值是 False ,即使用索引。默认值是 False ,表示使用索引。 1.0.0 版本新增 |
返回值
如果 inplace
为 True
,则返回排序后的 DataFrame
;否则为 None
。
示例代码:使用 Pandas 对 DataFrame 进行排序 pandas.DataFrame.sort_values()
基于单列进行排序
import pandas as pd
dates=['April-10',
'April-11',
'April-12',
'April-13',
'April-14',
'April-16']
sales=[200,300,400,200,300,300]
prices=[3, 1, 2, 4,3,2]
df = pd.DataFrame({'Date':dates ,
'Sales':sales ,
'Price': prices})
print("Before Sorting:")
print(df)
sorted_df=df.sort_values(by=['Price'])
print("After Sorting:")
print(sorted_df)
输出:
Before Sorting:
Date Sales Price
0 April-10 200 3
1 April-11 300 1
2 April-12 400 2
3 April-13 200 4
4 April-14 300 3
5 April-16 300 2
After Sorting:
Date Sales Price
Date Sales Price
1 April-11 300 1
2 April-12 400 2
5 April-16 300 2
0 April-10 200 3
4 April-14 300 3
3 April-13 200 4
它根据 Price
列中的值按升序(默认)对 DataFrame df
进行排序。
排序后的 DataFrame 中的索引与原始 DataFrame 中的索引保持一致。
如果你喜欢在排序后的 DataFrame
中使用新的索引列,那么你可以设置 ignore_index
(从 1.0.0 版本引入)为 True
。
import pandas as pd
dates = ["April-10", "April-11", "April-12", "April-13", "April-14", "April-16"]
sales = [200, 300, 400, 200, 300, 300]
prices = [3, 1, 2, 4, 3, 2]
df = pd.DataFrame({"Date": dates, "Sales": sales, "Price": prices})
print("Before Sorting:")
print(df)
sorted_df = df.sort_values(by=["Price"], ignore_index=True)
print("After Sorting:")
输出:
Before Sorting:
Date Sales Price
0 April-10 200 3
1 April-11 300 1
2 April-12 400 2
3 April-13 200 4
4 April-14 300 3
5 April-16 300 2
After Sorting:
Date Sales Price
0 April-11 300 1
1 April-12 400 2
2 April-16 300 2
3 April-10 200 3
4 April-14 300 3
5 April-13 200 4
在这里,我们使用 ignore_index=True
为行分配新的索引,并忽略原来 DataFrame
的索引。
示例代码:使用 Pandas DataFrame.sort_values()
基于多列对 DataFrame 进行排序
import pandas as pd
dates=['April-10',
'April-11',
'April-12',
'April-13',
'April-14',
'April-16']
sales=[200,300,400,200,300,300]
prices=[3, 1, 2, 4,3,2]
df = pd.DataFrame({'Date':dates ,
'Sales':sales ,
'Price': prices})
print("Before Sorting:")
print(df)
df.sort_values(by=['Sales','Price'],
ignore_index=True,
inplace=True)
print("After Sorting:")
print(df)
输出:
Before Sorting:
Date Sales Price
0 April-10 200 3
1 April-11 300 1
2 April-12 400 2
3 April-13 200 4
4 April-14 300 3
5 April-16 300 2
After Sorting:
Date Sales Price
0 April-10 200 3
1 April-13 200 4
2 April-11 300 1
3 April-16 300 2
4 April-14 300 3
5 April-12 400 2
在这里,首先按升序对 Sales
进行排序,然后对每个 Sales
的 Price
也按升序进行排序。
在 df
中,200
是 Sales
列的最小值,3
是 Sales
值为 200
的 Price
列的最小值。
所以,Sales
列中有 200
,Price
列中有 3
的行排在最前面。
由于 inplace=True
,调用 sort_values()
函数后,原 DataFrame
被就地修改。
示例代码:用 Pandas DataFrame.sort_values()
对 DataFrame 进行降序排序
import pandas as pd
dates=['April-10',
'April-11',
'April-12',
'April-13',
'April-14',
'April-16']
sales=[200,300,400,200,300,300]
prices=[3, 1, 2, 4,3,2]
df = pd.DataFrame({'Date':dates ,
'Sales':sales ,
'Price': prices})
print("Before Sorting:")
print(df)
sorted_df=df.sort_values(by=['Sales'],
ignore_index=True,
ascending=False)
print("After Sorting:")
print(sorted_df)
输出:
Before Sorting:
Date Sales Price
0 April-10 200 3
1 April-11 300 1
2 April-12 400 2
3 April-13 200 4
4 April-14 300 3
5 April-16 300 2
After Sorting:
Date Sales Price
0 April-12 400 2
1 April-11 300 1
2 April-14 300 3
3 April-16 300 2
4 April-10 200 3
5 April-13 200 4
它按照 Sales
列的数值降序对 DataFrame df
进行排序。
400
是 Sales
列中的最大值,因此该条目将被置于顶端,其他行也将相应地进行排序。
示例代码:使用 Pandas DataFrame.sort_values()
对 DataFrame 进行排序,将 NaN
放在开头
import pandas as pd
dates=['April-10',
'April-11',
'April-12',
'April-13',
'April-14',
'April-16']
sales=[200,300,400,200,300,300]
prices=[3, 1, 2, 4,3,2]
df = pd.DataFrame({'Date':dates ,
'Sales':sales ,
'Price': prices})
print("Before Sorting:")
print(df)
sorted_df=df.sort_values(by=['Price'],ignore_index=True,na_position='first')
print("After Sorting:")
print(sorted_df)
输出:
Before Sorting:
Date Sales Price
0 April-10 200 NaN
1 April-11 300 1.0
2 April-12 400 2.0
3 April-13 200 4.0
4 April-14 300 3.0
5 April-16 300 NaN
After Sorting:
Date Sales Price
0 April-10 200 NaN
1 April-16 300 NaN
2 April-11 300 1.0
3 April-12 400 2.0
4 April-14 300 3.0
5 April-13 200 4.0
在默认情况下,NaN
值在排序后被放在 DataFrame
的最后。
但是通过设置 na_position=first
,我们可以将 NaN
值放在 DataFrame
的开头。
相关文章
Pandas DataFrame DataFrame.to_excel() 函数
发布时间:2024/04/22 浏览次数:68 分类:Python
-
DataFrame.to_excel()函数将 DataFrame 数据转储到 excel 文件中,单张或多张。
Pandas DataFrame DataFrame.set_index() 函数
发布时间:2024/04/22 浏览次数:69 分类:Python
-
Pandas DataFrame 的 set_index 方法用于将列或数组设置为 DataFrame 的索引。
Pandas DataFrame DataFrame.sample() 函数
发布时间:2024/04/22 浏览次数:146 分类:Python
-
Pandas DataFrame sample()函数生成一个 DataFrame 的随机行或列的样本。
Pandas DataFrame DataFrame.reindex() 函数
发布时间:2024/04/22 浏览次数:60 分类:Python
-
Pandas DataFrame reindex()函数可以改变 DataFrame 的行或列的索引。
Pandas DataFrame DataFrame.query() 函数
发布时间:2024/04/22 浏览次数:109 分类:Python
-
DataFrame.query()方法从调用者 DataFrame 中过滤符合特定条件的行。
Pandas DataFrame DataFrame.plot.bar() 函数
发布时间:2024/04/22 浏览次数:165 分类:Python
-
Pandas DataFrame.plot.bar()函数沿着指定的轴绘制一个条形图。
Pandas DataFrame DataFrame.min() 函数
发布时间:2024/04/22 浏览次数:76 分类:Python
-
DataFrame min()函数获取 DataFrame 对象在指定轴上的最小值。
Pandas DataFrame DataFrame.median() 函数
发布时间:2024/04/22 浏览次数:189 分类:Python
-
DataFrame median()函数计算 DataFrame 对象在指定轴上的值的中位数。
Pandas DataFrame DataFrame.mean() 函数
发布时间:2024/04/22 浏览次数:142 分类:Python
-
DataFrame mean()函数计算 DataFrame 对象在指定轴上的值的平均值。