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
添加回答
举报