如何在没有附加功能的情况下将多个列的值附加到单个列中?

时间:2019-09-02 20:27:59

标签: python pandas

我有一个包含16310列x 6000行的数据。我想将所有列的值附加到一列中。假设

c1 c2
2  3
5  4
1  2

我想要这样的输出

c1
2
5
1
3
4
2

我已经使用append函数完成了此任务,并且工作正常。

acc_y_c = acc_y[0]
for i in range(1, len(acc_y.columns)):
    acc_y_c = acc_y_c.append(acc_y[i])

但是问题是,这花费了很多时间,正如我上面所说的,数据由16310列x 6000行组成。 我想知道有什么方法比上面的方法花费更少的时间吗?

1 个答案:

答案 0 :(得分:1)

您要.melt()吗?

df = pd.DataFrame({'c1': [2, 5, 1], 'c2': [3, 4, 2]})
df.melt(value_name='c1')
# returns:
  variable     c1
0       c1      2
1       c1      5
2       c1      1
3       c2      3
4       c2      4
5       c2      2

定时示例:

data = [[np.random.randint(10) for _ in range(6000)] for _ in range(16310)]
df = pd.DataFrame(data)

融化:

%%time
df_melt = df.melt()

>>> Wall time: 978 ms

追加:

%%time
acc_y_c = df[0]
for i in range(1, len(df.columns)):
    acc_y_c = acc_y_c.append(df[i])

>>> Wall time: 19min 15s