替换嵌套json中的空值

ergxz8rk  于 2023-03-13  发布在  其他
关注(0)|答案(2)|浏览(102)

我有一个数据框,其中包含嵌套列如下时,转换为JSON格式。

{"id" : 1,
 "address":
  {"adress1":"",
   "city" : "TX",
   "zip": ""
  },
 "gender": "",
  "code": 999
}

Dataframe 已规范化,将写入 snowflake 变体列。我希望在将其插入 snowflake 之前用null替换空值(“”)。
我尝试使用df.replace('',np.NAN, inPlace='True)。但是它只将性别替换为null。我无法看到address1和zip值为null。它们仍然是空的。有人能帮助我们如何处理这种情况吗?

rryofs0p

rryofs0p1#

尝试以下方法:

str_response = json.dumps(response)
df = pd.json_normalize(json.loads(str_response))
df.replace('',np.NAN, inplace=True)
print(df)
id  gender  code  address.address1 address.city  address.zip
0   1     NaN   999               NaN           TX          NaN
dsekswqp

dsekswqp2#

对于您的特定情况,您可以使用for循环将''替换为np.nan
你可以使用嵌套循环来过滤2层json,如果你有更多的嵌套层,你可以在try块中使用更多的for循环:

import numpy as np

j={"id" : 1,
   "address":{"adress1":"","city" : "TX","zip": ""},
   "gender": "",
   "code": 999}

for x in j:
    if j[x]=='':
        j[x]=np.nan
    try:
        for y in j[x]:
            if j[x][y]=='':
                j[x][y]=np.nan
    except:
        pass

print(j)
#{'id': 1,
 'address': {'adress1': nan, 'city': 'TX', 'zip': nan},
 'gender': nan,
 'code': 999}

相关问题