Skip to main content
 首页 » 编程设计

python之在具有非唯一元素的列上合并具有不同大小的 Pandas 数据框

2025年05月04日25zhujiabin

我有两个 pandas 数据框,我想根据数据框中公共(public)列的值进行合并。但是,在其中一个数据框中,列中的值不是唯一的:

df1 = pd.DataFrame( 
{'SimId:': [1, 1, 1, 2, 2], 
 'RunId': [1, 2, 3, 1, 2], 
 'Velocity': [5, 6, 7, 8, 9]}) 
 
df2 = pd.DataFrame( 
{'SimId': [1, 2], 
 'weather': ['sun', 'snow']}) 

因此我想得到这样的数据框:

df3 = pd.DataFrame( 
{'SimId:': [1, 1, 1, 2, 2], 
 'RunId': [1, 2, 3, 1, 2], 
 'Velocity': [5, 6, 7, 8, 9], 
 'weather': ['sun', 'sun', 'sun', 'snow', 'snow']}) 

当尝试像这样合并时:

df3 = pd.merge(df1, df2, on='SimId', how='right') 

我得到一个“KeyError”。

谁能帮我解决这个问题的最pythonic方法是什么?

请您参考如下方法:

您的代码有效:

df3 = pd.merge(df1, df2, on='SimId', how='right') 

您只需要修正 df1 中的拼写错误:不是“SimId:”,而是“SimId”。