如何使用列名和列值从pandas DataFrame生成列表?

时间:2012-08-04 19:25:34

标签: python pandas

我有一个pandas dataframe对象,如下所示:

   one  two  three  four  five
0    1    2      3     4     5
1    1    1      1     1     1

我想生成列表对象列表,其中第一项是列标签,其余列表值是列数据值:

nested_list = [['one', 1, 1]
               ['two', 2, 1]
               ['three', 3, 1]
               ['four', 4, 1]
               ['five', 5, 1]]

我该怎么做?谢谢你的帮助。

5 个答案:

答案 0 :(得分:35)

最简单的方法可能是list(dt.T.itertuples())(其中dt是您的数据框)。这会生成一个元组列表。

答案 1 :(得分:10)

上面的@BrenBarn答案会产生一个元组列表,而不是所讨论的列表列表。我特别需要一个列表列表,以便能够使用DataNitro将数据帧写入spreadsheed。使用列表推导改编了上面的例子:

[list(x) for x in dt.T.itertuples()]

根据需要产生结果

答案 2 :(得分:5)

严格来说,如果你想要嵌套列表(而不是元组列表),你可以做到

df.values.tolist()

因为df.values是一个numpy数组。这将为您提供所需的列表列表:

[[0.0001313652121930252, 3.5915356549999985e-05], 
 [3.5915356549999985e-05, 0.00011634321240684215]]

答案 3 :(得分:3)

我天真的方法是使用iteritems,将'll'作为列表列表,将l作为单个列表。

df = DataFrame({'one':[1,1], 'two':[2,1], 'three':[3,1], 'four':[3,1] })

ll = []

for idx,row in df.iteritems():
    l = row.values.tolist()
    l.insert(0,idx)
    ll.append(l)

答案 4 :(得分:0)

老问题我知道,但这对我来说比其他答案更有意义。

如果这是您的数据框:

df = pd.DataFrame({'one': [1, 1], 'three': [3, 1], 'four': [4, 1],
           'five': [5, 1], 'two': [2, 1]},
          columns=['one', 'two', 'three', 'four', 'five'])

这样做:

df.T.reset_index().values.tolist()

结果

[['one', 1, 1], ['two', 2, 1], ['three', 3, 1], ['four', 4, 1], ['five', 5, 1]]