Pandas处理SKU列JSON时报JSONDecodeError: Expecting value错如何解决?
问题原因
抛出JSONDecodeError是因为SKU列存在三类无法直接被json.loads解析的值:
- 第一行的字符串
'NaN',不属于JSON合法格式 - 第三行的空字符串
'',没有有效JSON内容 - 第二行的JSON串中引号是HTML转义格式
",不是标准JSON要求的双引号
解决代码
先导入依赖库:
import pandas as pd import json import html
自定义解析函数处理所有异常场景:
def parse_sku(sku_str): # 处理空值、NaN字符串场景 if pd.isna(sku_str) or sku_str.strip() in ('', 'NaN'): return [] # 先反转义HTML实体,把"转换为标准双引号 unescaped_str = html.unescape(sku_str) try: json_arr = json.loads(unescaped_str) return [item['Result'] for item in json_arr] except: # 所有解析失败的场景统一返回空列表 return []
执行处理和行拆分:
df['SKU'] = df['SKU'].apply(parse_sku) result = df.explode('SKU', ignore_index=True)[['ID', 'SKU', 'NOTES']] # 把拆分后的空值替换为空字符串,匹配预期输出格式 result['SKU'] = result['SKU'].fillna('')
输出验证
最终得到的result和预期结果完全一致:
ID SKU NOTES 0 1 abj 1 2 00018 abj 2 2 00065 abj 3 3 abj
内容的提问来源于stack exchange,提问作者spartan123
相关产品推荐
相关产品推荐

