代码之家  ›  专栏  ›  技术社区  ›  Sbk3824

ValueError:传递值的形状为(1,6),索引暗示(6,6)

  •  53
  • Sbk3824  · 技术社区  · 7 年前

    我将一个列表从flask函数传递到另一个函数,并得到这个值错误。

    发送端我的代码:

    @app.route('/process', methods=['POST'])
    def process():
        name = request.form['name']
        comment = request.form['comment']
        wickets = request.form['wickets']
        ga = request.form['ga']
        ppballs = request.form['ppballs']
        overs = request.form['overs']
    
        score = [name,comment,wickets,ga,ppballs,overs]
        results = []
        results = eval_score(score)
        print results
    

    接收端:

    def ml_model(data):
        col = pd.DataFrame(data,columns=['runs','balls', 'wickets', 'ground_average', 'pp_balls_left', 'total_overs'])
        predicted = predictor(col)
    

     ...
     line 1598, in dispatch_request
     return self.view_functions[rule.endpoint](**req.view_args)
    
     File "/Users/sbk/guestbook/guestbook.py", line 26, in process
     results = eval_score(score)
    
     File "/Users/sbk/guestbook/eval_score.py", line 6, in eval_score
     col = pd.DataFrame(data,columns=['runs','balls', 'wickets',  'ground_average', 'pp_balls_left', 'total_overs'])
    
     File "/Users/sbk/anaconda2/lib/python2.7/site-  packages/pandas/core/frame.py", line 385, in __init__
     copy=copy)
    
     File "/Users/sbk/anaconda2/lib/python2.7/site-packages/pandas/core/frame.py", line 533, in _init_ndarray
     return create_block_manager_from_blocks([values], [columns, index])
    
     File "/Users/sbk/anaconda2/lib/python2.7/site-packages/pandas/core/internals.py", line 4631, in  create_block_manager_from_blocks
     construction_error(tot_items, blocks[0].shape[1:], axes, e)
    
     File "/Users/sbk/anaconda2/lib/python2.7/site-packages/pandas/core/internals.py", line 4608, in construction_error
     Open an interactive python shell in this framepassed, implied))
    

    请告诉我哪里出了问题。

    4 回复  |  直到 7 年前
        1
  •  112
  •   rafaelc    7 年前

    只需更改

    col = pd.DataFrame(data, columns=['runs','balls', 'wickets', 'ground_average', 'pp_balls_left', 'total_overs'])
    

    对于

    col = pd.DataFrame([data], columns=['runs','balls', 'wickets', 'ground_average', 'pp_balls_left', 'total_overs'])
    

    你想要的 [data] 对于 pandas 要理解它们是行。


    简单说明:

    a = [1, 2, 3]
    >>> pd.DataFrame(a)
       0
    0  1
    1  2
    2  3
    
    >>> pd.DataFrame([a])
       0  1  2
    0  1  2  3
    
        2
  •  4
  •   DevLoverUmar    4 年前

    我在邮件中遇到了类似的错误

    传递值的形状为(681783),索引在数据帧中暗示(6868)

    根据我的猜测,我输入了数据数组的转置,这就解决了问题

    更改自

    Features_Dataframe = pd.DataFrame(data=Features, columns=Feature_Labels)  # here Features ndarray is 68*1783
    

    Features_Dataframe = pd.DataFrame(data=Features.transpose(), columns=Feature_Labels)  # Now Features array became 1783*68 i.e., 1783 rows and 68 columns
    
        3
  •  3
  •   Candice Withrow    5 年前

    我在从回归系数(regressor.coeff\)生成数据帧时遇到了类似的问题,括号中给出了另一个要求二维输入的错误。如果出现此错误,请尝试在输入数组中附加[0],以便将值取出。 例如: 数据[0]

        4
  •  0
  •   Anabel Montero Posada    3 年前

    pd。DataFrame(regr.coef\u,df\u coeficients.columns,columns=['coefficient'])

    对此:

    pd。DataFrame(regr.coef\u[0],df\u coeficients.columns,columns=['coefficient'])