2017-01-26 14 views
3

私はリストのリストをpythonで持っています。私はそれをデータフレームに変換しようとしています。例えば、=Pythonのデータフレームリストリスト - AssertionError

foo = [ 
    [1,2,3...], 
    [a,b,c...], 
    [aa,bb,cc...] 
] 

これらの3つのリストのそれぞれに100個の要素があります。私は、データフレームに変換するには、以下を試してみました -

df = pandas.DataFrame(foo, columns=headers) // where headers is ['id', 'fname', 'lname'] 
df = pandas.DataFrame(foo, columns=[foo[0], foo[1], foo[2]]) 

私はこのエラーになっていますが -

AssertionError: 3 columns passed, passed data had 100 columns 
+0

このエラーかなり明確なカット、ないようですね? 3つの列名だけを渡していますが、データには100列あります。 –

+0

@ juanpa.arrivillaga - はい、私はエラーを理解しています。私はその設定をDFに変換する方法を見つけることができません – newbie

答えて

6

をあなたは、次の方法を試すことができます。このエラーは、コンストラクタpandas.DataFrameを使用すると、各サブリストが行として解釈されるという事実に起因します。あなたは、ヘッダーとリストから辞書を作ることができ、次のいずれか

import pandas as pd 
headers = ['id', 'fname', 'name'] 
df = pd.DataFrame(dict(zip(headers, foo))) 

df 
#fname id lname 
#0 a 1  aa 
#1 b 2  bb 
#2 c 3  cc 
#3 d 4  dd 
#4 e 5  ee 

またはリストをトランスポーズ:

df = pd.DataFrame(list(zip(*foo)), columns=headers) 

df 
# id fname lname 
#0 1  a  aa 
#1 2  b  bb 
#2 3  c  cc 
#3 4  d  dd 
#4 5  e  ee 
1

また、データフレームを転置DataFrame.from_recordsを試すことができます。

In [17]: df = pd.DataFrame.from_records(foo).T 

In [18]: df 
Out[18]: 
    0 1 2 
0 1 a aa 
1 2 b bb 
2 3 c cc 

In [19]: df.columns = ['id', 'fname', 'lname'] 

In [20]: df 
Out[20]: 
    id fname lname 
0 1  a aa 
1 2  b bb 
2 3  c cc 
関連する問題