替换嵌套json中的空值

问题描述 投票:0回答:2

我有一个数据框,当转换为 json 格式时,它包含如下嵌套列。

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

dataframe 被归一化,将被写入雪花变体列。我想在插入雪花之前用空值替换空值(“”)。

我尝试使用 df.replace('',np.NAN, inPlace='True)。但它只用 null 替换了性别。我无法看到带有空值的 address1 和 zip 值。他们仍然是空的。有人可以帮助我们如何处理这种情况。

python
2个回答
0
投票

试试这个方法:

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

0
投票

对于您的特定情况,您可以使用 for 循环将

''
替换为
np.nan

您可以使用嵌套循环在 2 级 json 中进行过滤。如果你有更多的嵌套层次,你可以在 try 块中使用更多的 forloops:

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}
© www.soinside.com 2019 - 2024. All rights reserved.