2012-08-04 162 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]] 
相關問題