【问题标题】:How to insert a dropped join key column from Dataframe join in order如何按顺序从 Dataframe 连接中插入删除的连接键列
【发布时间】:2021-06-01 05:58:30
【问题描述】:

输入

我有这两个数据框

current_rComp = 
   #1  X  Y
0  p1  A  B

next_rComp = 
   #2  X  Z
0  p2  A  C
1  p3  A  D

我需要使用相同的键 (X) 内部连接 ​​2 个数据帧并恢复删除的 next_rCompX 列。所以我尝试如下。

key = current_rComp.columns.intersection(next_rComp.columns).tolist()
proof_path = pd.merge(current_rComp, next_rComp,how='inner', on=key)
key_column = proof_path[key].add_suffix('_')
proof_path = pd.concat([proof_path, key_column], axis=1)

输出

proof_path =
   #1  X  Y  #2  Z X_
0  p1  A  B  p2  C  A
1  p1  A  B  p3  D  A

我想将next_rComp的删除的X列恢复为加入前next_rComp的列顺序。

我想要的输出是

proof_path =
   #1  X  Y  #2 X_  Z
0  p1  A  B  p2  A  C
1  p1  A  B  p3  A  D

有没有简单的方法可以得到我想要的结果?

【问题讨论】:

    标签: python pandas dataframe join


    【解决方案1】:

    想法是在merge 中使用left_onright_on 参数,并通过前缀重命名列key,并通过字典重命名第二个DataFrame 的列:

    #removed converting to list and if necessary sort=False
    key = current_rComp.columns.intersection(next_rComp.columns, sort=False)
    
    new_key = key + '_'
    d = dict(zip(key, new_key))
    print (d)
    {'X': 'X_'}
    
    proof_path = pd.merge(current_rComp, 
                          next_rComp.rename(columns=d),
                          how='inner', 
                          left_on=key.tolist(), 
                          right_on=new_key.tolist())
    
    print (proof_path)
       #1  X  Y  #2 X_  Z
    0  p1  A  B  p2  A  C
    1  p1  A  B  p3  A  D
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-17
      • 1970-01-01
      • 1970-01-01
      • 2015-09-24
      • 1970-01-01
      • 2023-02-10
      • 1970-01-01
      相关资源
      最近更新 更多