2024-10-01 09:23:21 发布
网友
我尝试使用函数导入json文件:
sku = pandas.read_json('https://cws01.worldstores.co.uk/api/product.php?product_sku=125T:FT0111')
但是,我一直得到以下错误
ValueError: arrays must all be same length
如何将其正确导入数据帧?在
这是json的结构:
}
The ^{} function采用多种格式。在
由于您没有指定json文件的格式(orient=属性),pandas将默认认为您的数据是列式的。熊猫期望的不同格式将在下面讨论。在
orient=
您正试图从https://cws01.worldstores.co.uk/api/product.php?product_sku=125T:FT0111解析的数据 似乎不符合任何支持的格式,因为它似乎只是一个“记录”。熊猫期待着某种收藏。在
您可能应该尝试将多个条目收集到一个文件中,然后使用read_json函数对其进行解析。在
read_json
编辑:
pandas.read_json
import urllib2 import pandas as pd url_base = "https://cws01.worldstores.co.uk/api/product.php?product_sku={}" products = ["125T:FT0111", "125T:FT0111", "125T:FT0111"] raw_data_list = [] for sku in products: url = url_base.format(sku) raw_data_list.append(urllib2.urlopen(url).read()) data = "[" + (",".join(raw_data_list)) + "]" data = pd.read_json(data, orient='records') data
/编辑
The ^{} function是pandas试图将尽可能多的功能塞进单个函数的另一个光辉例子。这当然是一个非常复杂的函数。在
如果您的数据是Series,pandas.read_json(orient=)默认为'index'
Series
pandas.read_json(orient=)
'index'
解析Series时允许的定向值是:{'split','records','index'}
{'split','records','index'}
注意,序列索引对于orient='index'必须是唯一的。在
orient='index'
如果您的数据是DataFrame,pandas.read_json(orient=)默认为'columns'
DataFrame
'columns'
解析DataFrame时允许的定向值为: {'split','records','index','columns','values'}
{'split','records','index','columns','values'}
注意,序列索引对于orient='index'和orient='columns'必须是唯一的,而数据帧列对于orient='index'、orient='columns'和{}必须是唯一的。在
orient='columns'
无论您的数据是DataFrame还是Series,该orient=都将期望数据的格式相同:
需要dict的字符串表示形式,如DataFrame构造函数所采用的格式:
需要dict列表的字符串表示形式,如:
[{"col1":8,"col2":5},{"col1":7,"col2":6},{"col1":6,"col2":7},{"col1":5,"col2":8}]
注意这里没有设置索引。在
需要嵌套dict dict的字符串表示形式,如:
{"1":{"col1":8,"col2":5},"2":{"col1":7,"col2":6},"3":{"col1":6,"col2":7},"4":{"col1":5,"col2":8}}
值得注意的是,除了字符串,它不接受其他类型的指示符。可能在以后的版本中修复。在
需要嵌套dict的字符串表示形式,如:
{"col1":{"1":8,"2":7,"3":6,"4":5},"col2":{"1":5,"2":6,"3":7,"4":8}}
需要列表的字符串表示形式,如:
[[8, 5],[7, 6],[6, 7],[5, 8]]
在大多数情况下,您得到的数据帧如下所示,其中包含上面的json字符串:
col1 col2 1 8 5 2 7 6 3 6 7 4 5 8
也许这并不是最优雅的解决方案,但却能让我找回我想要的东西,或者至少我相信是这样的,如果出了什么问题,请随时发出警告
url = "https://cws01.worldstores.co.uk/api/product.php?product_sku=125T:FT0111" data = urllib2.urlopen(url).read() data = json.loads(data) data = pd.DataFrame(data.items()) data = data.transpose()
另一个解决方案是使用try-except。在
json_path='https://cws01.worldstores.co.uk/api/product.php?product_sku=125T:FT0111' try: a=pd.read_json(json_path) except ValueError: a=pd.read_json("["+json_path+"]")
The ^{} function 采用多种格式。在
由于您没有指定json文件的格式(
orient=
属性),pandas将默认认为您的数据是列式的。熊猫期望的不同格式将在下面讨论。在您正试图从https://cws01.worldstores.co.uk/api/product.php?product_sku=125T:FT0111解析的数据 似乎不符合任何支持的格式,因为它似乎只是一个“记录”。熊猫期待着某种收藏。在
您可能应该尝试将多个条目收集到一个文件中,然后使用
read_json
函数对其进行解析。在编辑:
获取多行并使用
pandas.read_json
函数进行解析的简单方法:/编辑
我对pandas.read_json函数格式。
The ^{} function 是pandas试图将尽可能多的功能塞进单个函数的另一个光辉例子。这当然是一个非常复杂的函数。在
系列
如果您的数据是
Series
,pandas.read_json(orient=)
默认为'index'
解析
Series
时允许的定向值是:{'split','records','index'}
注意,序列索引对于
orient='index'
必须是唯一的。在数据帧
如果您的数据是
DataFrame
,pandas.read_json(orient=)
默认为'columns'
解析
DataFrame
时允许的定向值为:{'split','records','index','columns','values'}
注意,序列索引对于}必须是唯一的。在
orient='index'
和orient='columns'
必须是唯一的,而数据帧列对于orient='index'
、orient='columns'
和{格式
无论您的数据是
DataFrame
还是Series
,该orient=
都将期望数据的格式相同:分裂
需要dict的字符串表示形式,如
^{pr2}$DataFrame
构造函数所采用的格式:记录
需要dict列表的字符串表示形式,如:
注意这里没有设置索引。在
索引
需要嵌套dict dict的字符串表示形式,如:
值得注意的是,除了字符串,它不接受其他类型的指示符。可能在以后的版本中修复。在
列
需要嵌套dict的字符串表示形式,如:
价值观
需要列表的字符串表示形式,如:
结果数据帧
在大多数情况下,您得到的数据帧如下所示,其中包含上面的json字符串:
也许这并不是最优雅的解决方案,但却能让我找回我想要的东西,或者至少我相信是这样的,如果出了什么问题,请随时发出警告
另一个解决方案是使用try-except。在
相关问题 更多 >
编程相关推荐