将Pandas DataFrame转换为列表

时间:2019-02-17 20:06:02

标签: python pandas

如何从数据框出发:

df = pd.DataFrame({'a': range(0, 10), 'b': range(10, 20), 'c': range(20, 30)})

如下所示:

   a   b   c
0  0  10  20
1  1  11  21
2  2  12  22
3  3  13  23
4  4  14  24
5  5  15  25
6  6  16  26
7  7  17  27
8  8  18  28
9  9  19  29

并将其转换为列表:['0','1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18','19','20','21','22','23','24','25','26','27','28','29']

2 个答案:

答案 0 :(得分:3)

使用numpy:

list(np.reshape(df.values, -1, order='F'))

您的df形状为(10,3),而您想要的形状为(30,)。您可以通过numpy的重塑来实现。

-1在这种情况下只是(30,)的快捷方式。

order='F'确保您获得的值是“列式”的,如所需输出中所示。

通过tolist使用NumPy方法,您可以使用:

df.values.reshape(-1, order='F').tolist()

答案 1 :(得分:1)

我想可能有更好的方法,但是以下方法会起作用:

import pandas as pd

df = pd.DataFrame({'a': range(0, 10), 'b': range(10, 20), 'c': range(20, 30)})

mylist = list()
for i in df.columns:
    mylist += map(str, df[i].values.tolist())
print(mylist)

输出:

  

['0','1','2','3','4','5','6','7','8','9','10','11 ','12',   '13','14','15','16','17','18','19','20','21','22','23',   '24','25','26','27','28','29']