2017-08-03 74 views
2

我尝试将两个不同索引的系列组合在一起(相同的行数)。我试过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

设置索引s2索引第一:

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

谢谢!简单而有效! – Sean

+0

很高兴能帮到你,祝你好运! – jezrael

+1

如果我的(或其他)答案有帮助,请不要忘记[接受](http://meta.stackexchange.com/a/5235/295067) - 点击答案旁边的复选标记('✓')将其从灰色切换到填充。谢谢。 – jezrael

2

您可以通过S2的指数设置S1的索引,然后CONCAT他们

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) 

输出:通过s1

 
    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 
+0

感谢您的!我对社区很陌生,很多事情要学习。 – Sean

+0

很高兴帮助@蔡宇程! – Dark

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