我有df1:
ID Label1 Label2 Cat
P203 car ded 34
P560 bk green 67
P780 blue black 45
df2:
ID Label1 Label2 cat
P903 chyt dd 0
P560 bk3 green 0
P780 blue2 black2 0
P880 blue4 black 0
P203 blue9 black1 0
我想要一个类似的结果
ID Label1 Label2 cat
P903 chyt dd 0
P560 bk3 green 67
P780 blue2 black2 45
P880 blue4 black 0
P203 blue9 black1 34
df2是一个新的数据框,是df1的更新版本,因此唯一保持等于df1的列为“ ID”,其他列则使用不同的标签/单词进行了更新。但是,df1有一个手动添加的额外列。我想检索该信息并使用ID列作为键复制到df2中,但df2必须维护其列。
我尝试了.merge,但是它重复了列,或者省略了行。
答案 0 :(得分:0)
使用pd.DataFrame.merge
如果ID
不是index
>>> df2.merge(df1.loc[:,['ID','Cat']], on='ID', how='left').fillna(0)
ID Label1 Label2 cat Cat
0 P903 chyt dd 0 0.0
1 P560 bk3 green 0 67.0
2 P780 blue2 black2 0 45.0
3 P880 blue4 black 0 0.0
4 P203 blue9 black1 0 34.0
或者如果两个数据帧中的ID
是index
。
pd.DataFrame.join
>>> df2.join(df1['Cat']).fillna(0)
Label1 Label2 cat Cat
ID
P903 chyt dd 0 0.0
P560 bk3 green 0 67.0
P780 blue2 black2 0 45.0
P880 blue4 black 0 0.0
P203 blue9 black1 0 34.0
>>> df2.merge(df1['Cat'], on='ID', how='left').fillna(0)
Label1 Label2 cat Cat
ID
P903 chyt dd 0 0.0
P560 bk3 green 0 67.0
P780 blue2 black2 0 45.0
P880 blue4 black 0 0.0
P203 blue9 black1 0 34.0