python pandas将数据帧展平为列表

时间:2014-08-22 05:17:58

标签: python list numpy pandas dataframe

我有这样的df:

import pandas
a=[['1/2/2014', 'a', '6', 'z1'], 
   ['1/2/2014', 'a', '3', 'z1'], 
   ['1/3/2014', 'c', '1', 'x3'],
   ]
df = pandas.DataFrame.from_records(a[1:],columns=a[0])

我想要展平df所以这是一个连续的列表,如下所示:

['1/2/2014', 'a', '6', 'z1', '1/2/2014', 'a', '3', 'z1','1/3/2014', 'c', '1', 'x3']

我可以将行和extend循环到列表中,但这是一种更简单的方法吗?

4 个答案:

答案 0 :(得分:58)

您可以在DataFrame上使用.flatten()

df.values.flatten()

如果您希望结果是Python list,也可以添加.tolist()

答案 1 :(得分:10)

也许使用stack

df.stack().values
array(['1/2/2014', 'a', '3', 'z1', '1/3/2014', 'c', '1', 'x3'], dtype=object)

编辑>顺便提一下,Q中的DF使用第一行作为标签,这就是为什么它们不在输出中的原因。)

答案 2 :(得分:2)

你可以试试numpy

import numpy as np
np.reshape(df.values, (1,df.shape[0]*df.shape[1]))

答案 3 :(得分:0)

您可以使用 reshape 方法

df.values.reshape(-1)