簡體   English   中英

Python列表到dataframe - AssertionError

[英]Python list of lists to dataframe - AssertionError

我在python中有一個列表列表。 我試圖將其轉換為數據幀。 例如=

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

您可以嘗試以下方法。 該錯誤來自於使用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

您還可以嘗試DataFrame.from_records轉置Dataframe:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM