2017-04-03 78 views
5

我使用下面的代码来创建从列表中的数据帧创建大熊猫数据帧:的Python:从列表

test_list = ['a','b','c','d'] 
df_test = pd.DataFrame.from_records(test_list, columns=['my_letters']) 
df_test 

上面的代码工作正常。然后我试图为另一个列表相同的方法:

import pandas as pd 
q_list = ['112354401', '116115526', '114909312', '122425491', '131957025', '111373473'] 
df1 = pd.DataFrame.from_records(q_list, columns=['q_data']) 
df1 

但它给了我下面的错误这个时候:

--------------------------------------------------------------------------- 
AssertionError       Traceback (most recent call last) 
<ipython-input-24-99e7b8e32a52> in <module>() 
     1 import pandas as pd 
     2 q_list = ['112354401', '116115526', '114909312', '122425491', '131957025', '111373473'] 
----> 3 df1 = pd.DataFrame.from_records(q_list, columns=['q_data']) 
     4 df1 

/usr/local/lib/python3.4/dist-packages/pandas/core/frame.py in from_records(cls, data, index, exclude, columns, coerce_float, nrows) 
    1021   else: 
    1022    arrays, arr_columns = _to_arrays(data, columns, 
-> 1023            coerce_float=coerce_float) 
    1024 
    1025    arr_columns = _ensure_index(arr_columns) 

/usr/local/lib/python3.4/dist-packages/pandas/core/frame.py in _to_arrays(data, columns, coerce_float, dtype) 
    5550   data = lmap(tuple, data) 
    5551   return _list_to_arrays(data, columns, coerce_float=coerce_float, 
-> 5552        dtype=dtype) 
    5553 
    5554 

/usr/local/lib/python3.4/dist-packages/pandas/core/frame.py in _list_to_arrays(data, columns, coerce_float, dtype) 
    5607   content = list(lib.to_object_array(data).T) 
    5608  return _convert_object_array(content, columns, dtype=dtype, 
-> 5609         coerce_float=coerce_float) 
    5610 
    5611 

/usr/local/lib/python3.4/dist-packages/pandas/core/frame.py in _convert_object_array(content, columns, coerce_float, dtype) 
    5666    # caller's responsibility to check for this... 
    5667    raise AssertionError('%d columns passed, passed data had %s ' 
-> 5668         'columns' % (len(columns), len(content))) 
    5669 
    5670  # provide soft conversion of object dtypes 

AssertionError: 1 columns passed, passed data had 9 columns 

为什么同样的方式工作,为一个列表而不是另一个?任何想法可能是错误的?非常感谢!

回答

15

DataFrame.from_records将字符串视为字符列表。所以它需要尽可能多的列作为字符串的长度。

您可以简单地使用DataFrame构造函数。

In [3]: pd.DataFrame(q_list, columns=['q_data']) 
Out[3]: 
     q_data 
0 112354401 
1 116115526 
2 114909312 
3 122425491 
4 131957025 
5 111373473