【发布时间】:2021-12-26 05:58:26
【问题描述】:
输入是,
df = pd.DataFrame([[1,'NaN','abj','1/1/2021'],
[2,'[{"Result":"00018"},{"Result":"00065"}]','abj','1/1/2021'],
[3,'','abj','1/1/2021']],
columns = ['ID','SKU','NOTES','Date'])
预期结果
ID SKU NOTES
0 1 abj
1 2 00018 abj
2 2 00065 abj
3 3 abj
尝试了以下方法,但报错
df.SKU = df.SKU.apply(lambda x : [ i['Result'] for i in json.loads(x)])
df.explode('SKU')
结果错误:JSONDecodeError: Expecting value: line 1 column 1 (char 0)
【问题讨论】:
-
显然 anfd
x不是 JSON 字符串。你试过打印吗?或者将您的理解扩展为一个 for 循环,以便您可以打印每个值。或者使用命名函数而不是 lambda,这样你就可以调试它 -
当没有 'NaN 或 '' 时,同样的代码可以工作
-
是的,NaN 不会解码为 JSON。所以删除它们,替换为'[]'?听起来您知道问题出在哪里。
-
在
lambda中你应该使用一些if/else 并在你有NaN或""时跳过json