2016-09-02 68 views
3

我有兩個pandas.Series ...如何將兩個熊貓系列連接成一個具有交錯值的系列?

import pandas as pd 
import numpy as np 

length = 5 
s1 = pd.Series([1]*length) # [1, 1, 1, 1, 1] 
s2 = pd.Series([2]*length) # [2, 2, 2, 2, 2] 

...我想有他們在與交錯值的單個系列結合在一起,從第2系列。 喜歡的東西:1,2,1,2,1,2,1,2,1,2]

回答

5

使用np.column_stack

In[27]:pd.Series(np.column_stack((s1,s2)).flatten()) 
Out[27]: 
0 1 
1 2 
2 1 
3 2 
4 1 
5 2 
6 1 
7 2 
8 1 
9 2 
dtype: int64 
2

我們在這裏:

s1.index = range(0,len(s1)*2,2) 
s2.index = range(1,len(s2)*2,2) 
interleaved = pd.concat([s1,s2]).sort_index() 

idx values 
0 1 
1 2 
2 1 
3 2 
4 1 
5 2 
6 1 
7 2 
8 1 
9 2 
3

下面是使用一個NumPy stackingnp.vstack -

pd.Series(np.vstack((s1,s2)).ravel('F')) 
+0

我有一個疑問'flatten'和'ravel'是相似的是那裏特殊的區別? – shivsn

+1

@shivsn是的,我認爲'.flatten()'是一個副本。不知道這是否會導致效率問題。啊,剛剛發現,即使'.ravel()'不會複製,但'.ravel('F')'會。所以,我想在記憶效率方面應該是一樣的。 – Divakar

+0

非常感謝,因爲它更好的做法,以避免任何警告很多學習。 – shivsn