Skip to main content
 首页 » 编程设计

python之根据另一个数据框的值在数据框中添加行

2025年05月04日16傻小

我有以下两个数据框。请注意,“amt”在两个数据框中均按“id”分组。

  df1 
 
   id  code  amt 
0   A    1    5 
1   A    2    5 
2   B    3    10 
3   C    4    6 
4   D    5    8 
5   E    6    11 
 
  df2  
 
    id  code amt 
0   B   1    9 
1   C   12   10 

我想在 df2 中为 df1 中未包含在 df2 中的每个 id 添加一行。例如,由于 ID 的 A、D 和 E 不包含在 df2 中,我想为这些 ID 添加一行。附加行应包含 df2 中未包含的 id、属性 code 的空值和 df1 中的存储值> 对于属性 amt

结果应该是这样的:

   id  code name 
0   B    1    9 
1   C    12   10 
2   A    nan  5 
3   D    nan  8 
4   E    nan  11 

如果我能得到一些指导,我将不胜感激。

请您参考如下方法:

通过使用pd.concat

df=df1.drop('code',1).drop_duplicates() 
df[~df.id.isin(df2.id)] 
pd.concat([df2,df[~df.id.isin(df2.id)]],axis=0).rename(columns={'amt':'name'}).reset_index(drop=True) 
Out[481]:  
   name  code id 
0     9   1.0  B 
1    10  12.0  C 
2     5   NaN  A 
3     8   NaN  D 
4    11   NaN  E