将数据帧值转换为1D列表

时间:2018-03-09 17:49:12

标签: python list pandas dataframe

我的数据框如下:

V
Out[58]: 

     P1 P2 P3 

V1   a  b  c  
V2   f  g  h  
V3   k  l  m

我想将它们全部存储在列表L中,以便:

L=[a,b,c,f,g,h,k,l,m]

从1行迭代到另一行。知道如何去做吗?感谢

3 个答案:

答案 0 :(得分:3)

使用.values访问ndarray.tolist属性,重新整形并转换为列表:

df.values.reshape(-1,).tolist()
['a', 'b', 'c', 'f', 'g', 'h', 'k', 'l', 'm']

另一个是stack后跟直接tolist电话:

df.stack().tolist()
['a', 'b', 'c', 'f', 'g', 'h', 'k', 'l', 'm']

答案 1 :(得分:2)

使用pandas.read_csvtolist

sum

答案 2 :(得分:1)

itertools.chain方便:

from itertools import chain
import pandas as pd

df = pd.DataFrame([['a', 'b', 'c'],
                   ['f', 'g', 'h'],
                   ['k', 'l', 'm']],
                  columns=['P1', 'P2', 'P3'],
                  index=['V1', 'V2', 'V3'])

res = list(chain.from_iterable(df.values))

# ['a', 'b', 'c', 'f', 'g', 'h', 'k', 'l', 'm']