2017-04-03 56 views
5

Tôi đang sử dụng đoạn mã sau để tạo ra một khung dữ liệu từ một danh sách:Python: tạo ra một khung dữ liệu gấu trúc từ một danh sách

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

Đoạn mã trên hoạt động tốt. Sau đó, tôi đã thử các phương pháp tương tự cho một danh sách khác:

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

Nhưng nó đã cho tôi những lỗi sau thời gian này:

--------------------------------------------------------------------------- 
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 

Tại sao công việc phương pháp tương tự cho một danh sách nhưng không khác? Bất kỳ ý tưởng gì có thể sai ở đây? Cảm ơn rất nhiều!

Trả lời

15

DataFrame.from_records coi chuỗi là danh sách ký tự. vì vậy nó cần nhiều cột như chiều dài của chuỗi.

Bạn chỉ có thể sử dụng hàm tạo 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 
Các vấn đề liên quan