web-dev-qa-db-ja.com

python pandasデータフレームをリストにフラット化する

私は次のような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つの連続したリストにします。

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

行とextendをリストにループすることはできますが、もっと簡単な方法はありますか?

37
jason

DataFrameで .flatten() を使用できます。

df.values.flatten()

また、結果をPython list。]にする場合は、 .tolist() を追加することもできます。

65

多分 stack

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

Edit:ちなみに、QのDFは、最初の行をラベルとして使用しているため、ここの出力には含まれていません。)

11
meloncholy

あなたはnumpyで試すことができます

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