按索引合并两个数据帧

我有以下数据帧:

>df1
id开始条件信任发现技术
0 278 56假0.0 1
142118假0.01
&燃气轮机;df2
概念
0 A
1b

如何合并索引以获得:

id开始条件置信度发现技术概念
027856假0.01A
142118假0.01 B

我这样问是因为我的理解是merge()df1.merge(df2)使用列进行匹配。事实上,这样做我得到:

回溯(最近一次呼叫最后一次):
文件&quot&书信电报;stdin&gt&引用;,第1行,in<模块>
文件&quot/usr/local/lib/python2.7/dist-packages/pandas/core/frame.py“;,第4618行,合并中
复制=复制,指标=指标)
文件&quot/usr/local/lib/python2.7/dist-packages/pandas/tools/merge.py“;,第58行,合并中
复制=复制,指标=指标)
文件&quot/usr/local/lib/python2.7/dist-packages/pandas/tools/merge.py“;,第491行,在_init中__
自我验证规范()
文件&quot/usr/local/lib/python2.7/dist-packages/pandas/tools/merge.py“;,第812行,在“验证”规范中
raise MERGERROR('没有要执行合并的公共列')
pandas.tools.merge.MergeError:没有要执行合并的公共列

在索引上合并是不好的做法吗?不可能吗?如果是这样的话,我如何将索引转移到一个名为"的新列中;索引

使用merge,默认情况下这是一个内部联接:

pd.merge(df1,df2,左索引=True,右索引=True)

连接,默认情况下为左连接:

df1.join(df2)

concat),默认情况下为外部联接:

pd.concat([df1,df2],轴=1)

样本

df1=pd.DataFrame({‘a’:范围(6),
‘b’:[5,3,6,9,2,4]},index=list(’abcdef’))
打印(df1)
a b
零五
b 1 3
c 2 6
d 3 9
e 4 2
f 5 4
df2=pd.DataFrame({‘c’:范围(4),
‘d’:[10,20,30,40]},index=list(’abhi’))
打印(df2)
c d
a 0 10
b 120
H230
i 340


#默认内部联接
df3=pd.merge(df1,df2,左索引=True,右索引=True)
打印(df3)
a、b、c、d
a 0 5 0 10
b13120
#默认左连接
df4=df1.join(df2)
打印(df4)
a、b、c、d
a 0 5 0.0 10.0
b 1 3 1.0 20.0
C2 6楠楠
d 3 9楠楠
e 4 2楠楠
f 5 4楠楠
#默认外部联接
df5=pd.concat([df1,df2],轴=1)
打印(df5)
a、b、c、d
a 0.05.0 0.0 10.0
b 1.0 3.0 1.0 20.0
C2.06.0楠楠楠
d 3.0 9.0楠楠楠
e 4.0 2.0楠楠楠
f 5.0 4.0楠楠楠
海南2.0 30.0
i楠楠3.0 40.0

发表评论