我有以下名为table的熊猫数据表,希望将其所有单元格值存储在一个列表中:
table = pd.DataFrame({'col-1':[2,7,13,16,23,26,27,29], 'col-2':[541,3,0,15,329,525,6,28], 'col-3':[0,571,0,9,9,0,62,0]}, index=['row-1','row-2','row-3','row-4','row-5','row-6','row-7','row-8'])最后的输出应该如下所示:
my_list = [2,7,13,16,23,26,27,29,541,3,0,15,329,525,6,28,0,571,0,9,9,0,62,0]如果你能教我最有效的方法来完成这个任务,我会很感激的。干杯。
发布于 2020-10-15 09:51:04
一个可能的解决方案是使用melt()
my_list = table.melt()['value'].tolist()
print(my_list)或者,你也可以尝试@DavidK对to_numpy()的回答的变化,这是熊猫的推荐,也是在问题中讨论的。
my_list = df.T.to_numpy().ravel().tolist()
print(my_list)my_list = df.T.to_numpy().reshape(-1).tolist()
print(my_list)输出在任何情况下都是
[2, 7, 13, 16, 23, 26, 27, 29, 541, 3, 0, 15, 329, 525, 6, 28, 0, 571, 0, 9, 9, 0, 62, 0]发布于 2020-10-15 08:59:52
为了获得更好的性能,使用了numpy方法numpy.ravel和转置数据:
import numpy as np
L = np.ravel(table.T).tolist()使用DataFrame.unstack的想法也是可能的,但是如果巨大的df性能更差的话:
L = table.unstack().tolist()print (L)
[2, 7, 13, 16, 23, 26, 27, 29, 541, 3, 0, 15, 329, 525, 6, 28, 0, 571, 0, 9, 9, 0, 62, 0]发布于 2020-10-15 09:16:15
你可以用:
my_list = table.T.values.flatten().tolist()tanspose .T用于获得与您的示例相同的顺序。
https://stackoverflow.com/questions/64368127
复制相似问题