<pre><code>data = {'events': [{'id': 142896214,
'playerId': 37831,
'teamId': 3157,
'matchId': 2214569,
'matchPeriod': '1H',
'eventSec': 0.8935539999999946,
'eventId': 8,
'eventName': 'Pass',
'subEventId': 85,
'subEventName': 'Simple pass',
'positions': [{'x': 51, 'y': 49}, {'x': 40, 'y': 53}],
'tags': [{'id': 1801, 'tag': {'label': 'accurate'}}]}]}
</code></pre>
<p><strong>创建数据帧</strong></p>
<pre><code>df = pd.DataFrame.from_dict(data)
df = df['events'].apply(pd.Series)
</code></pre>
<p><a href="https://i.stack.imgur.com/bCdiW.jpg" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/bCdiW.jpg" alt="enter image description here"/></a></p>
<p><strong>用<code>pd.Series</code>压平<code>positions</code></strong></p>
<pre><code>df_p = df['positions'].apply(pd.Series)
df_p_0 = df_p[0].apply(pd.Series)
df_p_1 = df_p[1].apply(pd.Series)
</code></pre>
<p><strong>重命名<code>positions[0]</code>&;<code>positions[1]</code>:</strong></p>
<pre><code>df_p_0.columns = ['pos_0_x', 'pos_0_y']
df_p_1.columns = ['pos_1_x', 'pos_1_y']
</code></pre>
<p><strong>用<code>pd.Series</code>压平<code>tags</code>:</strong></p>
<pre><code>df_t = df.tags.apply(pd.Series)
df_t = df_t[0].apply(pd.Series)
df_t_t = df_t.tag.apply(pd.Series)
</code></pre>
<p><strong>重命名<code>id</code>&;<code>label</code>:</strong></p>
<pre><code>df_t = df_t.rename(columns={'id': 'tags_id'})
df_t_t.columns = ['tags_tag_label']
</code></pre>
<p><strong>将它们与<code>pd.concat</code>结合起来:</strong></p>
<pre><code>df_new = pd.concat([df, df_p_0, df_p_1, df_t.tags_id, df_t_t], axis=1)
</code></pre>
<p><strong>删除旧列:</strong></p>
<pre><code>df_new = df_new.drop(['positions', 'tags'], axis=1)
</code></pre>
<p><a href="https://i.stack.imgur.com/1pMV3.jpg" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/1pMV3.jpg" alt="enter image description here"/></a></p>