내 json은 다음과 같습니다.
{
"customer_name":"john",
"phone":{
"mobile":000,
"office":111
},
"mail":{
"office":"[email protected]",
"personal":"[email protected]"
}
}
전화 또는 우편은 하나 이상의 항목을 가질 수 있습니다. 또한 키 (사무실, 모바일, 직원)가 항상 같은 것은 아닙니다. 예를 들어, 비즈니스 또는 대안 일 수 있습니다. 그래서 열이 아닌 행으로 변환하고 싶었습니다. 대부분의 질문은 행에 대한 솔루션을 찾을 수 없도록 열로 변환하는 것입니다.
최종 데이터 프레임은 다음과 같아야합니다.
customer_name | phone.key | phone.val | mail.key | mail.value
john | mobile | 000 | |
john | office | 111 | |
john | | | office | [email protected]
john | | | personal | [email protected]
누군가 나를 도울 수 있습니까?
Yiu는 customer_name
새 key
s로 추가 된 중첩 사전의 형식을 변경할 수 있습니다 .
d = {
"customer_name":"john",
"phone":{
"mobile":000,
"office":111
},
"mail":{
"office":"[email protected]",
"personal":"[email protected]"
}
}
out = []
for k, v in d.items():
if isinstance(v, dict):
for k1, v1 in v.items():
out.append({'customer_name':d['customer_name'],f'{k}.key': k1,f'{k}.value':v1})
목록 이해 대안 :
out = [{'customer_name':d['customer_name'],f'{k}.key': k1,f'{k}.value':v1}
for k, v in d.items() if isinstance(v, dict) for k1, v1 in v.items()]
df = pd.DataFrame(out)
print (df)
customer_name phone.key phone.value mail.key mail.value
0 john mobile 0.0 NaN NaN
1 john office 111.0 NaN NaN
2 john NaN NaN office [email protected]
3 john NaN NaN personal [email protected]
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다