2017-08-09 51 views
1

我想根據數據框中的公共列的值合併兩個大熊貓數據幀。然而,在dataframes之一的列中的值不是唯一的:在具有非唯一元素的列上合併具有不同大小的大熊貓數據幀

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方式?

回答

1
your code works as Andrey said just fix a typo in df1 
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.merge(df1, df2, on='SimId', how='right') 
print (df3) 
    RunId SimId Velocity weather 
    # 0  1  1   5  sun 
    # 1  2  1   6  sun 
    # 2  3  1   7  sun 
    # 3  1  2   8 snow 
    # 4  2  2   9 snow 
2

你的代碼的工作:

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

你只需要修復DF1一個錯字:不是 'SIMID:',而是 'SIMID'。