Python 在类标签不变的情况下对数据帧进行排序
我想按升序对数据框的每一列进行排序Python 在类标签不变的情况下对数据帧进行排序,python,sorting,pandas,Python,Sorting,Pandas,我想按升序对数据框的每一列进行排序 df: a class 0 0.726300 1 1 0.330514 1 2 0.261841 1 3 0.321594 -1 4 0.273200 -1 5 0.125400 1 code: for each_column in df.columns: if each_co
df:
a class
0 0.726300 1
1 0.330514 1
2 0.261841 1
3 0.321594 -1
4 0.273200 -1
5 0.125400 1
code:
for each_column in df.columns:
if each_column !='class':
df[each_column] = sorted(df[each_column])
sorted df:
a class
0 0.125400 1
1 0.261841 1
2 0.273200 1
3 0.321594 -1
4 0.330514 -1
5 0.726300 1
但我希望类列具有原始数据帧中的相应输入值。例如,在原始df中,第4行(即索引=4)中的输入值为0.273200,对应的类为-1,输入值为0.330514,对应的类为1,但在对df进行排序后,上述值的类值发生了变化,这是不应该发生的。请建议我如何调整要与相应输入值关联的类列的代码。应完成以下工作:
In [5]: df
Out[5]:
a class
0 0.726300 1
1 0.330514 1
2 0.261841 1
3 0.321594 -1
4 0.273200 -1
5 0.125400 1
In [6]: df.sort_values(by='a')
Out[6]:
a class
5 0.125400 1
2 0.261841 1
4 0.273200 -1
3 0.321594 -1
1 0.330514 1
0 0.726300 1
我们应该做这项工作:
In [5]: df
Out[5]:
a class
0 0.726300 1
1 0.330514 1
2 0.261841 1
3 0.321594 -1
4 0.273200 -1
5 0.125400 1
In [6]: df.sort_values(by='a')
Out[6]:
a class
5 0.125400 1
2 0.261841 1
4 0.273200 -1
3 0.321594 -1
1 0.330514 1
0 0.726300 1
@fuglede您给出的解决方案是返回原始数据帧,而不是排序。@vikky:它返回排序后的
数据帧。如果你需要的话,你可以用它覆盖df
。@fuglede确切地说,我想用排序的值覆盖df列使用df.sort\u值(by='a',inplace=True)
@fuglede你给出的解决方案是返回原始数据帧,而不是排序。@vikky:它返回一个排序的数据帧。如果你需要的话,你可以用这个来覆盖df
。@fuglede确切地说,我想用排序后的值覆盖df列使用df.sort\u值(by='a',inplace=True)
。