Python-将多个列合并为一个交错列

Python-将多个列合并为一个交错列,python,pandas,dataframe,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

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

  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()的破解,但我打赌有更好的方法。对于ML应用程序,该应用程序将时间序列数据的多个维度放入单个流中

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

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
要获取数据帧,请执行以下操作:

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

对于回答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)])
给定样本

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)])

给定样本*10000

给定样本*1000000


谢谢!我知道它必须有一个功能。谢谢!另一个很好的答案。我想知道它在速度上与df.stack()方法相比如何。@sfortney,ayhan的更好。很高兴知道。我的前任也是这样。事实上,也许不是。我会做得更多analysis@ayhan你说得对。我不会再那样做了。在测试中包括数据帧创建,即:-)