合并两个熊猫数据框,保持排名靠前的行

时间:2018-12-06 19:05:18

标签: python pandas dataframe

df_a和df_b是看起来像下面的两个数据帧

df_a
A   B       C      D     E
x1  Apple   0.3   0.9    0.6
x1  Orange  0.1   0.5    0.2
x2  Apple   0.2   0.2    0.1
x2  Orange  0.3   0.4    0.9
x2  Mango   0.1   0.2    0.3
x3  Orange  0.3   0.1    0.2


df_b
A   B_new   F    
x1  Apple   0.3  
x1  Mango   0.2  
x1  Orange  0.1   
x2  Apple   0.2   
x2  Orange  0.3     
x2  Mango   0.1  
x3  Orange  0.3  
x3  Mango   0.2  
x3  Apple   0.1  

我想合并A列上的这两个数据帧,以便仅保留B_new列中在F列中具有最高“ n”值的行。其中“ n”对应于df_a中A的每个唯一值所对应的行数。

简而言之,我希望我的结果如下所示

A   B       C      D     E    B_new    F
x1  Apple   0.3   0.9    0.6  Apple   0.3
x1  Orange  0.1   0.5    0.2  Mango   0.2
x2  Apple   0.2   0.2    0.1  Orange  0.3 
x2  Orange  0.3   0.4    0.9  Apple   0.2
x2  Mango   0.1   0.2    0.3  Mango   0.1
x3  Orange  0.3   0.1    0.2  Orange  0.3

1 个答案:

答案 0 :(得分:0)

使用FOR + errorlevel为每个groupby创建一个组ID,然后基于该列和cumcount列进行合并

DataFrame

输出:

A