因值中存在冒号无法从JSON列表创建pandas DataFrame问题求助
解决方案
- 最优方案:你的源数据本身就是Python字典组成的列表,完全不需要走JSON序列化再用
read_json加载的流程,直接创建DataFrame即可规避所有特殊字符导致的解析问题,也不需要单独校验任何字段,完全适配动态的键值结构:
import pandas as pd dt=[{'lineno': '3544', 'sku': 'B2039P015DP', 'status': 'Shipped', 'order_qty': '4', 'openQty': '0', 'wipQty': '0', 'shippedQty': '2', 'closedQty': '0', 'closed_date': '', 'returnedQty': '0', 'deliveredQty': '0', 'imageUrl': 'https://d2p3w.cloudfront.net/pub/media/catalog/product/b/2/b2039p010ds.jpg', 'itemName': 'Primo Brown Cube Box, 5Ply, (20"x10"x10"), Pack of 15', 'price': '1033.76000', 'udf1': None, 'udf2': None, 'udf3': None, 'udf4': None, 'udf5': None, 'internalLineNo': '1'}] dummy = pd.DataFrame(dt)
- 若你有特定场景必须走JSON序列化再加载的流程,可以给
read_json添加dtype=False参数关闭自动类型推断,避免解析特殊字符时误判格式出错,同样不需要单独处理任何字段:
import json import pandas as pd dt=[{'lineno': '3544', 'sku': 'B2039P015DP', 'status': 'Shipped', 'order_qty': '4', 'openQty': '0', 'wipQty': '0', 'shippedQty': '2', 'closedQty': '0', 'closed_date': '', 'returnedQty': '0', 'deliveredQty': '0', 'imageUrl': 'https://d2p3w.cloudfront.net/pub/media/catalog/product/b/2/b2039p010ds.jpg', 'itemName': 'Primo Brown Cube Box, 5Ply, (20"x10"x10"), Pack of 15', 'price': '1033.76000', 'udf1': None, 'udf2': None, 'udf3': None, 'udf4': None, 'udf5': None, 'internalLineNo': '1'}] dummy = pd.read_json(json.dumps(dt), orient='records', dtype=False)
以上两种方案都兼容任意字段的特殊字符,不需要针对特定键值对做额外处理,支持动态加载结构变化的数据。
内容的提问来源于stack exchange,提问作者Shashank Trivedi
相关产品推荐
相关产品推荐

