Python Pandas - 将多个列组合成一个交错列

时间:2016-07-29 16:41:45

标签: python pandas dataframe

如何将多个列合并为一个交错列?例如,如果我有数据:

  Column 1 Column 2
0        A        E
1        B        F
2        C        G
3        D        H

我想要的形式是:

  Column 1 
0        A       
1        E       
2        B       
3        F       
4        C       
5        G       
6        D       
7        H     

有什么好的,矢量化的pythonic方法可以做到这一点?我可能会做某种df.apply()hack,但我打赌有更好的方法。该应用程序将多个维度的时间序列数据放入ML应用程序的单个流中。

2 个答案:

答案 0 :(得分:6)

首先堆叠列,然后删除多索引:

df.stack().reset_index(drop=True)
Out: 
0    A
1    E
2    B
3    F
4    C
5    G
6    D
7    H
dtype: object

答案 1 :(得分:3)

获取数据框:

 pd.DataFrame(df.values.reshape(-1, 1), columns=['Column 1'])

enter image description here

对于回答OP问题的系列文章:

 pd.Series(df.values.flatten(), name='Column 1')

对于一系列时序测试:

pd.Series(get_df(n).values.flatten(), name='Column 1')

时序

<强>码

def get_df(n=1):
    df = pd.DataFrame({'Column 2': {0: 'E', 1: 'F', 2: 'G', 3: 'H'},
                       'Column 1': {0: 'A', 1: 'B', 2: 'C', 3: 'D'}})
    return pd.concat([df for _ in range(n)])

给定样本

enter image description here

鉴于样本* 10,000

enter image description here

鉴于样本* 1,000,000

enter image description here