Python 基于与其他数据帧的匹配更新数据帧新列
我有两个数据帧df1,df2,如下所示: df1:UID是唯一的Python 基于与其他数据帧的匹配更新数据帧新列,python,pandas,Python,Pandas,我有两个数据帧df1,df2,如下所示: df1:UID是唯一的 UID STATE 123 WB 456 GH 789 TY 156 OU df2:UID可以重复 UID TYPE GENR STATE 123 TYP1 G1 156 TYP6 G5 456 TYP3 G6 789 TYP4 G7 156 TYP1 G3 789 TYP5 G7 123 TYP2 G3 现在,我想根据df1中的匹配更新df2中
UID STATE
123 WB
456 GH
789 TY
156 OU
df2:UID可以重复
UID TYPE GENR STATE
123 TYP1 G1
156 TYP6 G5
456 TYP3 G6
789 TYP4 G7
156 TYP1 G3
789 TYP5 G7
123 TYP2 G3
现在,我想根据df1中的匹配更新df2中的列“STATE”。
df2:
如何以最有效的方式实现这一点?我试过这个,但它花了2200万张唱片太多的时间
dict_uid_state = dict(zip(df1.UID,df1.STATE))
df2.loc["STATE"] = " "
for each_uid in dict_uid_state:
query_index = df_input.query('UID == @each_uid',engine='python').index
df2.loc[query_index, "STATE"] = dict_uid_state[each_uid]
可以使用左键根据UID
列值合并/连接两个数据帧
试试这个:
df2 = df2[["UID", "TYPE", "GENR"]].merge(df1, on="UID", how="left")
>>> print(df2)
UID TYPE GENR STATE
0 123 TYP1 G1 WB
1 156 TYP6 G5 OU
2 456 TYP3 G6 GH
3 789 TYP4 G7 TY
4 156 TYP1 G3 OU
5 789 TYP5 G7 TY
6 123 TYP2 G3 WB
输出:
df2 = df2[["UID", "TYPE", "GENR"]].merge(df1, on="UID", how="left")
>>> print(df2)
UID TYPE GENR STATE
0 123 TYP1 G1 WB
1 156 TYP6 G5 OU
2 456 TYP3 G6 GH
3 789 TYP4 G7 TY
4 156 TYP1 G3 OU
5 789 TYP5 G7 TY
6 123 TYP2 G3 WB
@是的。最好在此处关闭并添加带有解决方案的注释