我想根据数据框中公共列的值组合两个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"。
任何人都可以帮我解决这个问题最灵活的方式吗?
答案 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