我有以下两个数据框。请注意,“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
