如何根据条件合并来自不同数据框的两列

How to merge two columns from different dataframes with conditions

我有两个数据框(first_df 和 second_df),我想按照新数据框将 first_df 的 ID 放在一列中的方式合并它们和第二列中的 second_df 的 ID,将相同的 ID 放在同一行中,对于不常见的 ID,将它们放在各自的列中,然后放在 Na 或 None 值旁边。

first = pd.DataFrame({"id": ["K0", "K1" ], "v": [1, 2]})

    id  v
0   K0  1
1   K1  2

second = pd.DataFrame({"id": ["K0", "K3", "K2"], "v": [4, 6,3]})
    id  v
0   K0  4
1   K3  6
2   K2  3


理想的输出

  id_1  id_2
0   K0  K0
1   K1  Na
2   Na  K2

IIUC 使用外连接创建新的 id 列:

df1 = first.assign(id_1 = first.id)[['id', 'id_1']]
df2 = second.assign(id_2 = second.id)[['id', 'id_2']]

df = df1.merge(df2, on='id', how='outer').drop('id', axis=1)

或者:

df1 = first.set_index('id', drop=False)[['id']].add_suffix('_1')
df2 = second.set_index('id', drop=False)[['id']].add_suffix('_2')

df = pd.concat([df1, df2], axis=1).reset_index(drop=True)
print (df)
  id_1 id_2
0   K0   K0
1   K1  NaN
2  NaN   K3
3  NaN   K2
import pandas as pd
data1 = {'Name':['Jai', 'Princi', 'Gaurav', 'Anuj'], 
        'Age':[27, 24, 22, 32], 
        'Address':['Nagpur', 'Kanpur', 'Allahabad', 'Kannuaj'], 
        'Qualification':['Msc', 'MA', 'MCA', 'Phd']} 


data2 = {'Name':['Abhi', 'Ayushi', 'Dhiraj', 'Hitesh'], 
        'Age':[17, 14, 12, 52], 
        'Address':['Nagpur', 'Kanpur', 'Allahabad', 'Kannuaj'], 
        'Qualification':['Btech', 'B.A', 'Bcom', 'B.hons']} 


df = pd.DataFrame(data1,index=[0, 1, 2, 3])
df1 = pd.DataFrame(data2, index=[4, 5, 6, 7])

print(df, "\n\n", df1)