<p>json字符串:</p>
<pre><code>j = {"a": [{ "Name": "name1",
"number": "number1",
"defaultPrice": {"p": "232", "currency": "CAD"},
"prices": {"DZ": {"p": "62", "currency": "RMB"},
"AU": {"p": "73", "currency": "AUD"},
"lg": "en"
}
},
{"Name": "name2",
"number": "number2",
"defaultPrice": {"p": "233", "currency": "CAD"},
"prices": {"DZ": {"p": "63", "currency": "RMB"},
"US": {"p": "72", "currency": "USD"},
"Lg": "en"
}
}
]}
</code></pre>
<p>获取所需输出的代码:</p>
<pre><code>country_codes = set()
for d in j['a']:
c = d['prices'].keys()
country_codes.update(c)
country_codes = sorted([i for i in country_codes if not i in ['lg','Lg']])
country_codes
meta = ['Name','number'] + [['prices',c,'p'] for c in country_codes] + [['prices',c,'currency'] for c in country_codes]
df = json_normalize(j['a'], record_path = 'prices', meta = meta,errors='ignore')
df = df.rename(columns={0: 'countryCode'})
df = df[~df['countryCode'].isin(['lg','Lg'])]
for idx, row in df.iterrows():
country = row['countryCode']
col_price = df.columns[df.columns.str.contains(country+'.p')][0]
col_currency = df.columns[df.columns.str.contains(country+'.currency')][0]
price = row[col_price]
currency = row[col_currency]
df.loc[idx,'price'] = price
df.loc[idx,'currency'] = currency
df = df[['Name','number','countryCode', 'currency', 'price']]
df
</code></pre>
<p>这将提供:</p>
<pre><code> Name number countryCode currency price
0 name1 number1 DZ RMB 62
1 name1 number1 AU AUD 73
3 name2 number2 DZ RMB 63
4 name2 number2 US USD 72
</code></pre>