<h2>解决方案</h2>
<p>您可以使用以下两种方法中的任意一种进行此操作:</p>
<ul>
<li>方法1:使用<code>pd.read_json()</code></li>
<li>方法2:使用<code>pd.DataFrame()</code>
<code>.DataFrame()</code>方法接受
<ul>
<li><p>a<em><code>single dict</code></em></p>
<p>键是列名,值是列值</p>
</li>
<li><p>a<em><code>list of dicts</code></em></p>
<p>每个列表项都是数据帧的一行,以<code>dict</code>表示:键是该特定行的列名和列值</p>
</li>
</ul>
</li>
</ul>
<h2>代码</h2>
<p>这里,我们使用<code>list of dicts</code>方法来创建数据帧。首先,我们使用自定义函数<code>prepare_records()</code>将数据</strong>转换为<code>list of dicts</code>,然后应用以下两种方法之一</p>
<pre class="lang-py prettyprint-override"><code># prepare records
records = prepare_records(data)
# Method-1: using read_json()
import json
df = pd.read_json(json.dumps(records), orient='records')
# Method-2: using DataFrame()
df = pd.DataFrame(data=records)
</code></pre>
<p><strong>输出</strong>:</p>
<pre class="lang-sh prettyprint-override"><code># print(df.to_markdown(index=False))
| CandidateName | CountyName | ElectionDayNoVotes | ElectionDayVotes | ElectionDayYesVotes | ElectionYear |
|: -|: -| -:| -:| :| -:|
| BIDEN, JOSEPH ROBINETTE JR | ADAMS | 0 | 1 | 0 | 2020 |
| TRUMP, DONALD J. | ADAMS | 0 | 1 | 0 | 2020 |
| BIDEN, JOSEPH ROBINETTE JR | ALLEGHENY | 0 | 1 | 0 | 2020 |
| TRUMP, DONALD J. | ALLEGHENY | 0 | 1 | 0 | 2020 |
</code></pre>
<h2>自定义函数</h2>
<pre class="lang-py prettyprint-override"><code># custom function
def prepare_records(data):
records = []
for county in data['Election']['Statewide'][0].values():
records.extend(county) # same as: records += county
return records
</code></pre>
<h2>虚拟数据</h2>
<pre class="lang-py prettyprint-override"><code>data = {
'Election':
{'Statewide': [
{
'ADAMS': [
{
'CandidateName': 'BIDEN, JOSEPH ROBINETTE JR',
'CountyName': 'ADAMS',
'ElectionDayNoVotes': '0',
'ElectionDayVotes': '1',
'ElectionDayYesVotes': '0',
'ElectionYear': '2020'
},
{
'CandidateName': 'TRUMP, DONALD J.',
'CountyName': 'ADAMS',
'ElectionDayNoVotes': '0',
'ElectionDayVotes': '1',
'ElectionDayYesVotes': '0',
'ElectionYear': '2020'
},
],
'ALLEGHENY': [
{
'CandidateName': 'BIDEN, JOSEPH ROBINETTE JR',
'CountyName': 'ALLEGHENY',
'ElectionDayNoVotes': '0',
'ElectionDayVotes': '1',
'ElectionDayYesVotes': '0',
'ElectionYear': '2020'
},
{
'CandidateName': 'TRUMP, DONALD J.',
'CountyName': 'ALLEGHENY',
'ElectionDayNoVotes': '0',
'ElectionDayVotes': '1',
'ElectionDayYesVotes': '0',
'ElectionYear': '2020'
},
],
},
],
}
}
</code></pre>