2012-08-04 81 views
17

我有一个熊猫数据帧的对象,看起来像这样:如何使用列名和列值从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]] 

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

回答

34

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

+0

谢谢!我不知道itertuples()。 – turtle 2012-08-04 19:34:53

+1

我也没有意识到itertuples在那里...... - 优雅+1 – 2012-08-04 19:40:48

+3

创建元组列表,尽管不是列表列表 – Joop 2013-12-13 12:12:34

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) 
9

@BrenBarn上面的答案产生的元组清单,而不是问题列表的列表。我特别需要一个列表清单,以便能够使用DataNitro将数据帧写入数据集。适合与列表理解上面的例子:

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

这就产生需要

5

严格地说,如果你想嵌套列表(而不是元组的列表)的结果,你可以做

df.values.tolist() 

因为df.values是一个numpy数组。这将给你一个清单,请求:

[[0.0001313652121930252, 3.5915356549999985e-05], 
[3.5915356549999985e-05, 0.00011634321240684215]] 
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]] 
相关问题