所以这按预期工作:
df1 = pd.DataFrame({'date':[123,456],'price1':[23,34]}).set_index('date')
df2 = pd.DataFrame({'date':[456,789],'price2':[22,32]}).set_index('date')
df1.join(df2, how='outer')
price1 price2
date
123 23.0 NaN
456 34.0 22.0
789 NaN 32.0
但是如果我不设置索引,就会报错:
df1 = pd.DataFrame({'date':[123,456],'price1':[23,34]})
df2 = pd.DataFrame({'date':[456,789],'price2':[22,32]})
df1.join(df2, on='date', how='outer')
ValueError: columns overlap but no suffix specified: Index(['date'], dtype='object')
这是为什么,我认为他们应该给出相同的结果是错误的吗?
答案 0 :(得分:1)
如果您只想添加两个数据框而不是通过某个列连接,则需要添加后缀,以免创建具有相同名称的列。例如:
df1.join(df2, how='outer', lsuffix='_left', rsuffix='_right')
如果你想加入列,你应该使用合并:
df1.merge(df2, how='outer')