2017-08-03 112 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