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你说得对。我不会再那样做了。在测试中包括数据帧创建,即:-)