pandas - 通过index.name交叉数据帧

时间:2018-02-03 23:49:40

标签: python python-3.x pandas

我有两个共享(某些)ID的数据帧(在index.name中指定),我希望与它们相交。

所以给出:

dfA.index.name = 'id'
dfB.index.name = 'id'

dfA就像:

        count
id       
1         15
3         16
8          1

dfB就像:

        owns
id 
1       True
3       False
12      False

我想获得dfC就像:

        count    owns
id 
1         15      True
3         16      False

我试过

s1 = pd.merge(dfA, dfB, how='inner', on=['id'])

没有成功

3 个答案:

答案 0 :(得分:5)

我在这种情况下使用join

dfC = dfA.join(dfB, how='inner')

答案 1 :(得分:4)

您应该合并索引,而不是列:

s1 = pd.merge(dfA, dfB, left_index=True, right_index=True)

为索引指定名称不会使其成为列。

答案 2 :(得分:1)

我将使用pd.concat

pd.concat([df1,df2],join ='inner',axis=1)
Out[475]: 
    count   owns
id              
1      15   True
3      16  False