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

问题描述 投票:1回答:3

我有一个数据帧如下:

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行迭代到另一行。知道如何去做吗?谢谢

python list pandas dataframe
3个回答
3
投票

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

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

另一个是stacking,接着是直接的tolist电话:

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


2
投票

使用tolistsum

sum(df.values.tolist(),[])
Out[65]: ['a', 'b', 'c', 'f', 'g', 'h', 'k', 'l', 'm']

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']
© www.soinside.com 2019 - 2024. All rights reserved.