使用非唯一元素

时间:2017-08-09 13:46:27

标签: python pandas

我想根据数据框中公共列的值组合两个pandas数据帧。但是,在其中一个数据框中,列中的值不是唯一的:

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"。

任何人都可以帮我解决这个问题最灵活的方式吗?

2 个答案:

答案 0 :(得分:2)

您的代码有效:

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

你只需要修改df1中的拼写错误:不是' SimId:',但是' SimId'。

答案 1 :(得分: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