<p>构造函数<code>pd.DataFrame</code>希望您告诉您提供的数据也必须如何索引。这被记录在案<a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.html" rel="nofollow noreferrer">here</a></p>
<p>函数<code>csv.DictReader</code>使用</p>
<blockquote>
<p>the values in the first row of file f will be used as the fieldnames.</p>
</blockquote>
<p>有关更多信息,请参阅csv<a href="https://docs.python.org/3/library/csv.html" rel="nofollow noreferrer">documentation</a></p>
<p>因此,由<code>csv_reader</code>解析的每个<code>line</code>都是一个字典,其中键是CSV头,值是特定行中的每一行</p>
<p>例如,如果我的CSV是:</p>
<pre><code>Header1, Header2, Header3
1,2,3
11,11,33
</code></pre>
<p>然后在第一次迭代中,<code>line</code>对象将是:</p>
<pre><code>{'Header1': '1', 'Header2': '2', 'Header3': '3'}
</code></pre>
<p>现在,当您将其提供给<code>pd.DataFrame</code>时,需要指定数据是什么以及头/索引是什么。在这种情况下,数据是<code>['1', '2', '3']</code>,头/索引是<code>['Header1', 'Header2', 'Header3']</code>。这些可以分别通过调用<code>line.values()</code>和<code>line.keys()</code>提取</p>
<p>这就是我所做的改变</p>
<pre><code>with open(path_to_read_csv_file, "r") as csv_file:
csv_reader = csv.DictReader(csv_file, delimiter=',')
for line in csv_reader:
try:
# validation ...
df = pd.DataFrame(line.values(), line.keys())
df.to_csv(path_to_save_csv_file)
except Exception as e:
print('Something Happend!')
print(e)
continue
</code></pre>