【问题标题】:ValueError: Shape of passed values is (1, 6), indices imply (6, 6)ValueError:传递值的形状为 (1, 6),索引暗示 (6, 6)
【发布时间】:2024-10-10 17:00:02
【问题描述】:

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

我在发送端的代码:

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

请告诉我哪里出错了。

【问题讨论】:

    标签: python pandas flask valueerror


    【解决方案1】:

    我在消息中遇到了类似的错误

    传递值的形状是 (68, 1783),索引在数据帧中暗示 (68, 68)

    根据我的猜测,我输入了 ndarray 数据的转置并解决了问题

    更改自

    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
    

    【讨论】:

      【解决方案2】:

      我在从回归系数 (regressor.coeff_) 制作数据帧时遇到了类似的问题,括号给出了另一个要求二维输入的错误。如果您收到此错误,请尝试使用 [0] 附加输入数组,以便将值拉出。 前任: 数据[0]

      【讨论】:

        【解决方案3】:

        简单的改变

        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
        

        【讨论】:

        • @rafaelc 我遇到了同样的问题,但现在当我按照你说的做时,我得到了这个错误 ValueError: Must pass 2-d input
        • 它并没有说明它计算的是 6,6 而不是 6,1 !有什么变化?
        • @FabioSpaghetti 检查我的答案:)
        • 谢谢,这正是我要找的答案。