我有这个数据帧(df)
A object
B object
C int32
D object
E int32
F float64
G float64
H float64
dtype: object
然后我使用此代码对其进行排序
df = df.sort_values(['C', 'E'], ascending=[0, 0])
并且它正确地按C排序,但根本不是E.有人可以帮忙吗?
答案 0 :(得分:0)
这将首先根据C对数据帧进行排序,然后如果列C匹配,则将对列E进行排序
df.sort(['C', 'E'])
也许您想要分别对每列进行排序。有点像...
new_c = df.sort('C')
df.drop("C", axis=1, inplace=True)
df["C"] = new_c
答案 1 :(得分:0)
看起来您的代码应该没问题。也许您没有预料到sort_values如何工作?
假设DataFrame df,前两列是对象类型,接下来的两列是整数
df=pd.DataFrame({'A object':['a',1,'b',2],
'B object':['c',3,'d',4],
'C int':[1,4,3,1],
'E int':[0,4,2,1],
'Strings', ['a','s','d','f']})
您希望按一列整数进行排序,然后根据列#C; C int'进行排序。然后按列' E int'
对这些进行排序df.sort_values(by=['C int','E int'],ascending=[False,False])
但是,您不能简单地按列排序'对象'或者' B对象'因为它们包含字符串和整数。您可以按字符串排序'但是假设您要将其添加到该行...
df.sort_values(by=['C int','E int','Strings'],ascending=[False,False,True])
第三个标准的添加没有给出任何新内容,因为它们不会在“E int'
中重复出现您可以按字符串'
排序df.sort_values(by=['Strings'],ascending=[True])
欢呼声