![](/img/trans.png)
[英]Copy contents from one Dataframe to another based on column values in Pandas
[英]Copy column value from one dataframe to another based on id in Pandas
我正在尝试将Name
从df2
复制到df1
,其中ID
在两个数据帧之间是通用的。
df1:
ID Name
1 A
2 B
4 C
16 D
7 E
df2:
ID Name
1 X
2 Y
7 Z
预期输出:
ID Name
1 X
2 Y
4 C
16 D
7 Z
我试过这样,但没有奏效。 我无法理解如何在这里赋值。 我正在分配=df2['Name']
这是错误的。
for i in df2["ID"].tolist():
df1['Name'].loc[(df1['ID'] == i)] = df2['Name']
尝试update
df1 = df1.set_index('ID')
df1.update(df2.set_index('ID'))
df1 = df1.reset_index()
df1
Out[476]:
ID Name
0 1 X
1 2 Y
2 4 C
3 16 D
4 7 Z
如果行的顺序无关紧要,那么连接两个 dfs 和 drop_duplicates 将达到结果,
df2.append(df1).drop_duplicates(subset='ID')
另一种解决方案是,
s = df1["Name"]
df1.loc[:,"Name"]=df1["ID"].map(df2.set_index("ID")["Name"].to_dict()).fillna(s)
开/关:
ID Name
0 1 X
1 2 Y
2 4 C
3 16 D
4 7 Z
再考虑一个
df,dg = df1,df2
df = df.set_index('ID')
dg = dg.set_index('ID')
df.loc[dg.index,:] = dg # All columns
#df.loc[dg.index,'Name'] = dg.Name # Single column
df = df.reset_index()
>>> df
ID Name
0 1 X
1 2 Y
2 4 C
3 16 D
4 7 Z
或者对于单个列(两者的索引都是“ID”
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.