2016-03-14 90 views
2

我見過一些類似的線程,但他們並沒有真正幫助我,因此新帖子。從元組列表創建熊貓數據框

我想從一個元組列表創建以下DF:

Values   Total extra 
label      
Pictionary 0.000000  12 
Chess  4.609929  12 
Cluedo  8.421986  12 

這裏是所有使組件這一點:

columns = ['Total, 'extra'] 

tups = [(u'Pictionary', 0.0, 12) 
     (u'Chess', 4.6099290780141837, 12) 
     (u'Cluedo', 8.4219858156028362, 12)] 

我的失敗嘗試:

pd.DataFrame(tups, columns=columns) 

錯誤消息:

AssertionError: 2 columns passed, passed data had 3 columns 
+1

爲什麼不簡單'pd.DataFrame(tups,columns = ['Values'] + columns)'? –

回答

6

我認爲你必須添加一個值list列,然後嘗試list comprehension,然後用第一列set_index,如果需要第一列index

import pandas as pd 

columns = ['label', 'Total', 'extra'] 

tups = [(u'Pictionary', 0.0, 12), 
     (u'Chess', 4.6099290780141837, 12), 
     (u'Cluedo', 8.4219858156028362, 12)] 

df = pd.DataFrame([x for x in tups], columns=columns) 

print df 
     label  Total extra 
0 Pictionary 0.000000  12 
1  Chess 4.609929  12 
2  Cluedo 8.421986  12 

df = df.set_index('label') 
#if you need set column name 
df.columns.name = 'Values' 

print df 
Values   Total extra 
label      
Pictionary 0.000000  12 
Chess  4.609929  12 
Cluedo  8.421986  12 

或者您也可以通過Colonel Beauvelcomment使用的解決方案:

import pandas as pd 

columns = ['Total', 'extra'] 

tups = [(u'Pictionary', 0.0, 12), 
     (u'Chess', 4.6099290780141837, 12), 
     (u'Cluedo', 8.4219858156028362, 12)] 

df = pd.DataFrame(tups, columns=['label']+columns) 
print df 
     label  Total extra 
0 Pictionary 0.000000  12 
1  Chess 4.609929  12 
2  Cluedo 8.421986  12 

df = df.set_index('label') 
df.columns.name = 'Values' 
print df 
Values   Total extra 
label      
Pictionary 0.000000  12 
Chess  4.609929  12 
Cluedo  8.421986  12 
+1

忘記了接受這個答案!謝謝。 –