如何组合两个不同索引的熊猫系列?

时间:2017-08-03 05:15:13

标签: python pandas

我尝试将两个不同的索引序列组合在一起(相同的行数)。我试过了pd.concat((s1, s2), axis=1)。 例如,s1是:

index | s1
----- | -----
0     | 1.5
----- | -----
1     | 2

和s2是:

index | s2
----- | -----
a     | 1
----- | -----
b     | 2

但我明白了:

index | s1  | s2  
----- | --- | --- 
0     | 1.5 | NaN
----- | --- | ---
1     | 2   | NaN
----- | --- | ---
a     | NaN | 1
----- | --- | ---
b     | NaN | 2

我想要的是:

index | s1  | s2 
----- | --- | ---
a     | 1.5 | 1
----- | --- | ---
b     | 2   | 2

那就是保留series2的索引。 我怎么能得到这个?非常感谢!

3 个答案:

答案 0 :(得分:4)

首先按s1索引设置s2的索引:

s1.index = s2.index
df = pd.concat([s1, s2], axis=1)
print (df)
    s1  s2
a  1.5   1
b  2.0   2

答案 1 :(得分:2)

您可以通过s2索引设置s1的索引,然后将它们连接起来

s1 = pd.DataFrame({'s1':[1.5,2]},index=[0,1])
s2 = pd.DataFrame({'s2':[1,2]},index=['a','b'])
pd.concat([s2,s1.set_index(s2.index)],axis=1)

输出:

   s2   s1
a   1  1.5
b   2  2.0

pd.concat([s1.set_index(s2.index),s2],axis=1)
    s1  s2
a  1.5   1
b  2.0   2

答案 2 :(得分:2)

选项1
pd.DataFrame.insert

s2.insert(0, 's1', s1.s1.values)
s2

    s1  s2
a  1.5   1
b  2.0   2

选项2
重建

pd.DataFrame(dict(s1=s1.s1.values, s2=s2.s2.values), s2.index)

    s1  s2
a  1.5   1
b  2.0   2

选项3
pd.DataFrame.join

s1.set_index(s2.index).join(s2)

    s1  s2
a  1.5   1
b  2.0   2