python pandas将数据帧展平为列表

python pandas flatten a dataframe to a list

我有一个这样的df:

1
2
3
4
5
6
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到一个列表,但这是一种更简单的方法吗?


您只需在数据帧上使用.flatten()

1
df.values.flatten()

如果希望结果是python list,还可以添加.tolist()


可能使用堆栈?

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

(编辑:顺便说一下,q中的df使用第一行作为标签,这就是为什么它们不在这里的输出中的原因。)


你可以试着麻木

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