2017-08-09 4 views
1

データフレーム内の共通の列の値に基づいて結合する2つのパンダデータフレームがあります。しかし、データフレームの1の列の値は一意ではありません。異なるサイズのパンダデータフレームをユニークでない要素を持つ列にマージする

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」が表示されます。

これを解決する最も無慈悲な方法は誰ですか?しかし、 'SimId': 'SimId':

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

は、あなただけのDF1のタイプミスを修正する必要がありますない

答えて

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

あなたのコードは動作します。

関連する問題