Python 创建数据帧时出现值错误

Python 创建数据帧时出现值错误,python,scikit-learn,Python,Scikit Learn,尝试从JSON/Dict对象创建数据帧时,我收到以下错误。我是python新手,正在做一个学习练习,所以非常感谢大家的帮助 真正的问题是,我需要一行(值)和100列,但它告诉我,我设置它的方式需要100个值和100列 如果我不提供columns=json_input.keys(),我可以实现这一点,但它默认为100行,而不是100列和1行 import pandas as pd json_input = {"x0": "9.521496806", "x1": "wed", "x2": "-5.

尝试从JSON/Dict对象创建数据帧时,我收到以下错误。我是python新手,正在做一个学习练习,所以非常感谢大家的帮助

真正的问题是,我需要一行(值)和100列,但它告诉我,我设置它的方式需要100个值和100列

如果我不提供columns=json_input.keys(),我可以实现这一点,但它默认为100行,而不是100列和1行

import pandas as pd

json_input = {"x0": "9.521496806", "x1": "wed", "x2": "-5.087588682", "x3": "-17.21471427", "x4": "-2.486421073", "x5": "35.48653879", "x6": "-1.20495816", "x7": "-23.7174973", "x8": "105.7946327", "x9": "-5.951938559", "x10": "5.214871257", "x11": "0.303798139", "x12": "$296.43 ", "x13": "-0.194132881", "x14": "-2.188915191", "x15": "15.8504554", "x16": "-7.419140411", "x17": "6.931577729", "x18": "-33.76908811", "x19": "-1.932735617", "x20": "0.066503478", "x21": "0.014625357", "x22": "-2.826542568", "x23": "-9.51560375", "x24": "27.31797115", "x25": "-4.210150941", "x26": "-13.45071138", "x27": "17.51376958", "x28": "0.14235993", "x29": "6.49488499", "x30": "8.922856241", "x31": "1.264469019", "x32": "-14.22456453", "x33": "-22.51356894", "x34": "2.042085808", "x35": "7.996513763", "x36": "15.62250736", "x37": "-36.34086747", "x38": "2.665399772", "x39": "-1.354001761", "x40": "33.71068143", "x41": "11.74949803", "x42": "-2.793416547", "x43": "71.4392679", "x44": "-3.57085601", "x45": "-10.61019691", "x46": "63.36622572", "x47": "1.084953519", "x48": "0.965175942", "x49": "15.41097088", "x50": "38.02325393", "x51": "-4.601041878", "x52": "9.544564428", "x53": "5.171864325", "x54": "Aug", "x55": "3.238851899", "x56": "-1.444656373", "x57": "-24.85405723", "x58": "-0.127639937", "x59": "14.69515683", "x60": "-3.577237241", "x61": "12.67485", "x62": "-26.60833996", "x63": "22.3566647", "x64": "0.187033314", "x65": "-20.08925727", "x66": "0.3013055", "x67": "9.782791255", "x68": "-0.590871745", "x69": "-27.03617115", "x70": "0.178891203", "x71": "9.297257064", "x72": "-0.687360237", "x73": "23.1353161", "x74": "-1.692361883", "x75": "6.007302227", "x76": "-0.05636968", "x77": "20.23959571", "x78": "4.889493523", "x79": "0.02%", "x80": "20.11423271", "x81": "22.31711274", "x82": "asia", "x83": "-0.072090104", "x84": "volkswagon", "x85": "-0.14252212", "x86": "0.464293542", "x87": "-0.974325314", "x88": "7.131219017", "x89": "-2.506897555", "x90": "-0.069832619", "x91": "-11.84213839", "x92": "0.09761061", "x93": "15.27673142", "x94": "-1.927285625", "x95": "8.008175145", "x96": "0.659805361", "x97": "2.216918955", "x98": "-18.64465705", "x99\n": "-1.926577376"}

data_input = pd.DataFrame.from_dict(data=json_input, orient='index', columns=json_input.keys())

print(data_input)
C:\dev\anaconda3\lib\site packages\sklearn\externals\joblib\\uuu init\uuuu.py:15:DeprecationWarning:sklearn.externals.joblib在0.21中不推荐使用,将在0.23中删除。请直接从joblib导入此功能,该功能可以通过以下方式安装:pip install joblib。如果在加载pickle模型时引发此警告,则可能需要使用scikit learn 0.21+重新序列化这些模型。
warnings.warn(消息,类别=弃用警告)
回溯(最近一次呼叫最后一次):
文件“C:\dev\anaconda3\lib\site packages\pandas\core\internals\managers.py”,第1651行,位于从块创建块管理器中
放置=切片(0,透镜(轴[0]))]
文件“C:\dev\anaconda3\lib\site packages\pandas\core\internals\blocks.py”,第3095行,在make\u块中
返回klass(值,ndim=ndim,placement=placement)
文件“C:\dev\anaconda3\lib\site packages\pandas\core\internals\blocks.py”,第2631行,在\uu init中__
放置=放置)
文件“C:\dev\anaconda3\lib\site packages\pandas\core\internals\blocks.py”,第87行,在\uuu init中__
“{mgr}.”格式(val=len(self.values),mgr=len(self.mgr_locs)))
ValueError:传递的项目数错误1,放置意味着100
在处理上述异常期间,发生了另一个异常:
回溯(最近一次呼叫最后一次):
文件“pandastest.py”,第18行,在
data\u input=pd.DataFrame.from\u dict(data=json\u input,orient='index',columns=json\u input.keys())
文件“C:\dev\anaconda3\lib\site packages\pandas\core\frame.py”,第1138行,来自
返回cls(数据,索引=索引,列=列,数据类型=数据类型)
文件“C:\dev\anaconda3\lib\site packages\pandas\core\frame.py”,第451行,在\uuu init中__
复制=复制)
文件“C:\dev\anaconda3\lib\site packages\pandas\core\internals\construction.py”,第167行,在init_ndarray中
从块返回创建块管理器([值],[列,索引])
文件“C:\dev\anaconda3\lib\site packages\pandas\core\internals\managers.py”,第1660行,位于从块创建块管理器中
构造错误(总项目,块[0]。形状[1],轴,e)
文件“C:\dev\anaconda3\lib\site packages\pandas\core\internals\managers.py”,第1691行,在构造错误中
通过,暗示)
ValueError:传递值的形状为(100,1),索引暗示为(100,100)
--嗨,迈克,你可以在电话线的末尾加一个转置:

pd.DataFrame.from_dict(data=json_input, orient='index').T
这将为您提供所需的形状。

--Hi mike,您可以在行尾添加转置:

pd.DataFrame.from_dict(data=json_input, orient='index').T

这将为您提供所需的形状。

它将为您提供100行,因为您正在传递
orient=index
。如果您可以控制数据结构,则可以使用更简单的
pd.DataFrame.from_dict(data=json_input)
,输入格式如下:

{
    "column1": [value],
    "column2": [value],
    ...
}
或者在您的情况下:

{
    "x0": ["9.521496806"],
    "x1": ["wed"],
    ...
}

它给您100行,因为您正在传递
orient=index
。如果您可以控制数据结构,则可以使用更简单的
pd.DataFrame.from_dict(data=json_input)
,输入格式如下:

{
    "column1": [value],
    "column2": [value],
    ...
}
或者在您的情况下:

{
    "x0": ["9.521496806"],
    "x1": ["wed"],
    ...
}

您好,迈克,在您提供的数据中,“x0”是一列,“9.52…”是该列第一行的值,对吗?correct@Drago96Hi mike,在您提供的数据中,“x0”是一列,“9.52…”是该列第一行的值,对吗?correct@Drago96Ok。它是JSON,因为API发送的数据类似于`{“column1”:“value1”}`所以我可能只是将值转换为数组/列表类型。是的。在你的例子中,我尝试了这个方法,它成功了:
formatted={x:[json_input[x]]for x In json_input}
,因为事实证明我找到了另一种解决问题的方法。一个问题是,我可以收到一个dict列表或一个dict,我需要找到正确的方法来创建数据帧。实际上,将dict包装成一个列表就解决了这个问题<代码>json\u列表=[单个对象]确定。它是JSON,因为API发送的数据类似于`{“column1”:“value1”}`所以我可能只是将值转换为数组/列表类型。是的。在你的例子中,我尝试了这个方法,它成功了:
formatted={x:[json_input[x]]for x In json_input}
,因为事实证明我找到了另一种解决问题的方法。一个问题是,我可以收到一个dict列表或一个dict,我需要找到正确的方法来创建数据帧。实际上,将dict包装成一个列表就解决了这个问题<代码>json\u列表=[单个对象]就是这样!修复了这个问题,无需转换JSON dict。就是这样!修复了这个问题,无需转换JSON dict。