我有一个数据框,当转换为 json 格式时,它包含如下嵌套列。
{"id" : 1
"address":
{"adress1":""
"city" : "TX"
"zip": ""
}
"gender": ""
"code": 999
}
dataframe 被归一化,将被写入雪花变体列。我想在插入雪花之前用空值替换空值(“”)。
我尝试使用 df.replace('',np.NAN, inPlace='True)。但它只用 null 替换了性别。我无法看到带有空值的 address1 和 zip 值。他们仍然是空的。有人可以帮助我们如何处理这种情况。
试试这个方法:
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
对于您的特定情况,您可以使用 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}