<p>您可以在<code>visit id</code>上使用左<code>merge()</code><a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.merge.html" rel="nofollow noreferrer">merge</a></p>
<pre><code>> from pandas.io.json import json_normalize
> import json
> json1 = <your first json here>
> json2 = <your second json here>
> df1=pd.json_normalize(data=json.loads(json1), record_path='Patient', meta=['Doctor id','Visit id'])
> df2=pd.json_normalize(data=json.loads(json2), record_path='Diagnosis', meta=['Visit id'])
> print(df1.merge(df2, on='Visit id', how='left').dropna())
Patient id Patient name Doctor id Visit id diagnosis id diagnosis name
0 BK1221 Tim AU1254 B0001 D1001 fever
1 BK1221 Tim AU1254 B0001 D1987 cough
2 BK1221 Tim AU1254 B0001 D1265 running nose
3 BK1209 Sue AU8766 B0002 D1987 cough
4 BK1209 Sue AU8766 B0002 D1453 stomach ache
</code></pre>
<p>您还可以进行一些奇特的分组/打印</p>
<pre><code>pd.pivot_table(df3, index=['Patient id','Patient name','Doctor id','Visit id'], values=['diagnosis id','diagnosis name'], aggfunc=list)
diagnosis id diagnosis name
Patient id Patient name Doctor id Visit id
BK1209 Sue AU8766 B0002 [D1987, D1453] [cough, stomach ache]
BK1221 Tim AU1254 B0001 [D1001, D1987, D1265] [fever, cough, running nose]
</code></pre>
<p>和每个诊断/每个患者的计数</p>
<pre><code>df3.groupby(['diagnosis id', 'diagnosis name']).agg({'Patient name': [list, 'count']})
Patient name
list count
diagnosis id diagnosis name
D1001 fever [Tim] 1
D1265 running nose [Tim] 1
D1453 stomach ache [Sue] 1
D1987 cough [Tim, Sue] 2
</code></pre>