6 回答

TA貢獻1802條經驗 獲得超10個贊
這是因為在您的示例中,軸 0 是“向下”,而 1 是“右”(即,跨列)如果您查看sort_values的文檔,您會看到第一個參數確實是by
,并且默認值axis
是0. 所以你重復你的第一個例子,你需要執行toy.sort_values(by='labels', axis=0)

TA貢獻1780條經驗 獲得超4個贊
在上面的評論和答案中添加一個例子:
假設您有一個如下所示的數據框:
df = pd.DataFrame(data={"labels":{"0":7,"1":4,"2":7,"3":1,"4":5},"companies":{"0":9,"1":1,"2":6,"3":1,"4":8}})
>>df
labels companies
0 7 9
1 4 1
2 7 6
3 1 1
4 5 8
對于axis=0,它會在您傳遞索引級別和/或列標簽時進行排序:
df.sort_values(by='labels')
它為您提供一個排序的label列(默認情況下升序)。
labels companies
3 1 1
1 4 1
4 5 8
0 7 9
2 7 6
來了axis=1,參考下面的代碼:
df.sort_values('4',axis=1)
這將以排序的方式對列進行index 4排序。在這里它不會改變任何東西,因為 forindex 4因為5小于8并且默認情況下排序是ascending. 但是,如果你執行df.sort_values('1',axis=1)其中值下label超過companies,你將看到的位置labels,并companies已被更換。
companies labels
0 9 7
1 1 4
2 6 7
3 1 1
4 8 5

TA貢獻1797條經驗 獲得超4個贊
只是為了在我們選擇axis=1或時了解要清除的軸和行axis=0。
df.shape[0] # gives number of row count
df.shape[1] # gives number of col count
讓我們假設一個數據幀如下:
>>> df = pd.DataFrame({
... 'col1' : ['A', 'A', 'B', np.nan, 'D', 'C'],
... 'col2' : [2, 1, 9, 8, 7, 4],
... 'col3': [0, 1, 9, 4, 2, 3],
... })
>>> df
col1 col2 col3
0 A 2 0
1 A 1 1
2 B 9 9
3 NaN 8 4
4 D 7 2
5 C 4 3
因此,應用 df.shape 并查看它如何圍繞列和行旋轉:
>>> df.shape[0]
6 <-- Here, we have six row into the dataFrame
>>> df.shape[1]
3 <-- Here, we have three columns into the dataFrame
現在,如果您只是按列名對值進行排序,則無需指定,axis=1因為已指定列名,您可以簡單地執行以下操作:
>>> df.sort_values(by=['col1'])
col1 col2 col3
0 A 2 0
1 A 1 1
2 B 9 9
5 C 4 3
4 D 7 2
3 NaN 8 4
或者,您可以將多個列名作為列表傳遞by:
>>> df.sort_values(by=['col1', 'col2'])
col1 col2 col3
1 A 1 1
0 A 2 0
2 B 9 9
5 C 4 3
4 D 7 2
3 NaN 8 4
添加回答
舉報