2016-11-15 65 views
3

我有以下大熊貓DF:大熊貓:合併兩列,每隔一行

 original  mean 
    0 0.000000 0.065500 
    1 0.131000 0.135890 
    2 0.140779 0.144875 
    3 0.148971 0.150029 
    4 0.151088 0.144309 

我如何合併2列是這樣的:

 original 
    0 0.000000 
    1 0.065500 
    2 0.131000 
    3 0.135890 
    4 0.140779 
    5 0.144875 
    6 0.148971 
    7 0.150029 
    8 0.151088 
    9 0.144309 

回答

3

使用stack()方法:

In [2]: df 
Out[2]: 
    original  mean 
0 0.000000 0.065500 
1 0.131000 0.135890 
2 0.140779 0.144875 
3 0.148971 0.150029 
4 0.151088 0.144309 

In [3]: df.stack() 
Out[3]: 
0 original 0.000000 
    mean  0.065500 
1 original 0.131000 
    mean  0.135890 
2 original 0.140779 
    mean  0.144875 
3 original 0.148971 
    mean  0.150029 
4 original 0.151088 
    mean  0.144309 
dtype: float64 

In [4]: df.stack().reset_index(level=[0,1], drop=True) 
Out[4]: 
0 0.000000 
1 0.065500 
2 0.131000 
3 0.135890 
4 0.140779 
5 0.144875 
6 0.148971 
7 0.150029 
8 0.151088 
9 0.144309 
dtype: float64 
3

可以調用上的值reshape和構造另一個DF:

In [7]: 
pd.DataFrame(data=df.values.reshape(df.shape[0]*2,-1), columns=['original']) 

Out[7]: 
    original 
0 0.000000 
1 0.065500 
2 0.131000 
3 0.135890 
4 0.140779 
5 0.144875 
6 0.148971 
7 0.150029 
8 0.151088 
9 0.144309 

時序

在您的樣本數據集:

In [8]: 
%timeit df.stack().reset_index(level=[0,1], drop=True) 
%timeit pd.DataFrame(data=df.values.reshape(df.shape[0]*2,-1), columns=['original']) 

1000 loops, best of 3: 820 µs per loop 
1000 loops, best of 3: 446 µs per loop 

重塑的numpy的陣列是接近兩倍的速度在這裏