我在 pandas 中有两个数据框,如下所示。 EmpID 是两个数据帧中的主键。
df_first = pd.DataFrame([[1, 'A',1000], [2, 'B',np.NaN],[3,np.NaN,3000],[4, 'D',8000],[5, 'E',6000]], columns=['EmpID', 'Name','Salary'])
df_second = pd.DataFrame([[1, 'A','HR','Delhi'], [8, 'B','Admin','Mumbai'],[3,'C','Finance',np.NaN],[9, 'D','Ops','Banglore'],[5, 'E','Programming',np.NaN],[10, 'K','Analytics','Mumbai']], columns=['EmpID', 'Name','Department','Location'])
我想用 EmpID 连接这两个数据框,以便
- 如果存在并且键匹配,一个数据框中的缺失数据可以用另一表中的值填充
- 如果存在带有新键的观察结果,则应将它们附加到结果数据框中
我使用下面的代码来实现这一点。
merged_df = pd.merge(df_first,df_second,how='outer',on=['EmpID'])
但是这段代码给了我我不想要的重复列,所以我只使用两个表中的唯一列进行合并。
ColNames = list(df_second.columns.difference(df_first.columns))
ColNames.append('EmpID')
merged_df = pd.merge(df_first,df_second,how='outer',on=['EmpID'])
现在我没有得到重复的列,但在键匹配的观察中也没有得到价值。
如果有人能帮助我,我将非常感激。
问候,
凯拉什·内吉