如何根据另一个数据框列值对数据框进行排序?

时间:2021-06-27 15:45:48

标签: python pandas dataframe

我有两个数据框 df1 和 df2

df1 = pd.dataframe("TestCaseName" : ['B', 'D', 'A', 'E', 'C'])

  TestCaseName
0     B
1     D
2     A
3     E
4     C

和另一个数据框

df2 = pd.dataframe({"TestCaseName" : ['A', 'B', 'C', 'D', 'E'], "NameSpace" : ['T2'. 'T3', 'T6', 'T1', 'T8'])

   TestCaseName  NameSpace    

 0      A           T2
 1      B           T3
 2      C           T6
 3      D           T1
 4      E           T8

我想要的是根据df1对df2的测试用例名称进行排序。

这是我尝试过的;

df2 = df2.set_index('TestCaseName')
df2 = df2.reindex(index=df1['TestCaseName'])
df2 = df2.reset_index()

这给了我错误 ValueError:无法从重复轴重新索引

期望的输出:

  TestCaseName NameSpace
0     B           T3
1     D           T1 
2     A           T2
3     E           T8
4     C           T6

有人能告诉我我做错了什么或提出更好的主意吗?

3 个答案:

答案 0 :(得分:0)

只需对左侧为 df2 且右侧为 df1 的数据框进行右侧合并:

>>> df2.merge(df1, how='right')

  TestCaseName NameSpace
0            B        T3
1            D        T1
2            A        T2
3            E        T8
4            C        T6

PS:它假设 df1 包含 TestCaseName 在 df2 中的所有记录

答案 1 :(得分:0)

此错误意味着您在索引具有重复值时分配给列。您可以使用以下简单的方法尝试合并:

df2.merge(df1['TestCaseName'], how='right')

答案 2 :(得分:0)

这是一种方法:

var nav = App.Current.MainPage.Navigation;
var filter = new FilterPopup();

NavigationExtensions.ShowPopup(nav, filter);