Pandas DataFrame DataFrame.sort_values() 函式
-
pandas.DataFrame.sort_values()語法 -
示例程式碼:使用 Pandas 對 DataFrame 進行排序
pandas.DataFrame.sort_values()基於單列進行排序 -
示例程式碼:使用 Pandas
DataFrame.sort_values()基於多列對 DataFrame 進行排序 -
示例程式碼:用 Pandas
DataFrame.sort_values()對 DataFrame 進行降序排序 -
示例程式碼:使用 Pandas
DataFrame.sort_values()對 DataFrame 進行排序,將NaN放在開頭
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 的開頭。
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn