【发布时间】:2018-11-05 07:18:42
【问题描述】:
我正在尝试使用来自另一个数据框的数据更新一个数据框,用于一个名为“数据”的特定列。两个数据框都有唯一的 ID,称为“ID”列。两列都有一个“数据”列。我希望 df2 中的“数据”中的数据覆盖 df1“数据”中的条目,仅用于 df1 中的行数。如果 df2 中没有对应的“ID”,则应保留 df1 条目。
import pandas as pd
data1 = '''\
ID Data Data1
1 AA BB
2 AB BF
3 AC BK
4 AD BL'''
data2 = '''\
ID Data
1 AAB
3 AAL
4 MNL
5 AAP
6 MNX
8 DLP
9 POW'''
df1 = pd.read_csv(pd.compat.StringIO(data1), sep='\s+')
df2 = pd.read_csv(pd.compat.StringIO(data2), sep='\s+')
预期输出:
new df3 expected outcome.
ID Data Data1
1 AAB BB
2 AB BF
3 AAL BK
4 MNL BL
df2 是一个永远不会改变并且有数千个条目的值的主列表,而 df1 有时只有几百个条目。
我查看了 pd.merge 和 combine_first 但似乎无法获得正确的组合。
df3 = pd.merge(df1, df2, on='ID', how='left')
非常感谢任何帮助。
【问题讨论】: