根据另一个数据框对数据框的列和行进行排序

时间:2020-06-30 15:14:36

标签: python pandas unit-testing sorting

我有两个具有相同值但列顺序和索引不同的数据框。

df1=
index   col1    col2    col3   col4
----------------------------------
0       1       2017    1.3   1
1       2       2017    2.4   1
2       3       2017    3.5   0
3       1       2018    3.5   0


df2=
index   col3    col1    col2    col4
------------------------------------
0       1       2018    3.5     0
1       3       2017    3.5     0
2       1       2017    1.3     1
3       2       2017    2.4     1

有没有一种方法可以使一个变得与另一个相同?

我找到了一种对列进行排序的方法

df1 = df1[df2.columns]

但是我找不到重新排序行的方法。

2 个答案:

答案 0 :(得分:2)

这行吗?

df1.sort_values(by='col3') # change to the column you want to sort the rows by

您可以使用列表按多列排序

df1.sort_values(by=df2.columns)
df1.sort_values(by=['col3', 'col4'])

默认情况下,sort_values以升序排序。如果要按降序对行进行排序,可以使用以下命令:

df1.sort_values(by=['col3', 'col4'], ascending=False)

答案 1 :(得分:0)

您是否尝试过使用df.index进行排序?

df1.sort_values(by = df2.index,axis = 1,inplace = True)