我有一个包含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行组成。 我想知道有什么方法比上面的方法花费更少的时间吗?
答案 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