[英]JSONDecodeError: Expecting value: line 1 column 1 (char 0) in python
[英]Pandas: JSONDecodeError: Expecting value: line 1 column 1 (char 0)
輸入是,
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)
您應該檢查x
並跳過json
更長的版本,但更具可讀性
def convert(text):
if text not in ('', 'NaN'):
data = [i['Result'] for i in json.loads(text)]
else:
data = ''
return data
df.SKU = df.SKU.apply(convert)
較短的版本:
df.SKU = df.SKU.apply(lambda x : [i['Result'] for i in json.loads(x)] if x not in ('', 'NaN') else "")
編輯:
更通用的版本 - 它使用try/except
所以它應該與其他錯誤的字符串一起使用
def convert(text):
try:
data = [i['Result'] for i in json.loads(text)]
except Exception as ex:
print(f'exeption: "{text}" : {ex}')
data = ''
return data
df.SKU = df.SKU.apply(convert)
完整的工作示例:
import pandas as pd
import json
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'])
print(df)
def convert(text):
try:
data = [i['Result'] for i in json.loads(text)]
except Exception as ex:
print(f'exeption: "{text}" : {ex}')
data = ''
return data
df.SKU = df.SKU.apply(convert)
#df.SKU = df.SKU.apply(lambda x : [i['Result'] for i in json.loads(x)] if x not in ('', 'NaN') else "")
df = df.explode('SKU')
print(df)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.